Maison >développement back-end >Golang >Fscanf et en omettant des champs comme en C
Est-il possible d'omettre des champs %*s
comme en C ?
var pid int fmt.Fscanf(r, "%*s %d", &pid)
En fait, vous ne pouvez pas faire cela dans Go (du moins sur Go 1.21.0).
Le code source indique :
%*s
):实际上,字符串的动词始终是 单个字符 (% s
、%v
、%q
、%X
或 %X
en langage C) : en fait, le verbe de la chaîne est toujours Caractère unique
% s
, %v
, %q
, %X
ou %X
)Fscanf
方法 迭代参数(a
中的 Fscanf 数组(r io.Reader,格式字符串,a ...any)
)。因此,您必须在 a
Fscanf
Fscanf array(r io.Reader, format string, a...any) dans <code>a
). Par conséquent, vous devez définir un paramètre dans a
même si vous ne vous souciez pas de sa valeur
var pid int fmt.Fscanf(r, "%s %d", new(string), &pid)
Autres alternativesio.ReadAll
) : strings.Split
CB835C294C06824721603abd255bd78a
strings.Split
pidString := strings.Split(string(s), " ")[1] pid, err := strconv.Atoi(pidString) if err != nil { panic(err) // handle the error }
re := regexp.MustCompile(`[^\s]+ (?P<pid>\d+)`) // similar to "%s %d" matches := re.FindStringSubmatch(s) pidString := matches[re.SubexpIndex("pid")] pid, err := strconv.Atoi(pidString) if err != nil { panic(err) // handle the error }🎜Il existe peut-être d'autres moyens, mais ceux-ci devraient suffire. J'espère que cela pourra aider. 🎜
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!