Maison > développement back-end > Golang > Fscanf et en omettant des champs comme en C

Fscanf et en omettant des champs comme en C

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Libérer: 2024-02-12 16:18:05
avant
1226 Les gens l'ont consulté

Fscanf 并像 C 中那样省略字段

Contenu de la question

Est-il possible d'omettre des champs %*s comme en C ?

var pid int
fmt.Fscanf(r, "%*s %d", &pid)
Copier après la connexion

Solution de contournement

En fait, vous ne pouvez pas faire cela dans Go (du moins sur Go 1.21.0).

Le code source indique :

(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

Si vous ne souhaitez pas définir de variables, vous pouvez utiliser :

var pid int
fmt.Fscanf(r, "%s %d", new(string), &pid)
Copier après la connexion

Autres alternativesio.ReadAll

Pour votre cas spécifique, pour analyser quelque chose dans le lecteur, vous pouvez d'abord lire le lecteur dans une chaîne (par exemple

) : strings.Split CB835C294C06824721603abd255bd78a

Utilisez ensuite la méthode
    ou l'expression régulière, par exemple :
  1. strings.Split
  2. avec
  • pidString := strings.Split(string(s), " ")[1]
    pid, err := strconv.Atoi(pidString)
    if err != nil {
        panic(err) // handle the error
    }
    
    Copier après la connexion
  • Utilisez des expressions régulières :

    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
    }
    
    Copier après la connexion
    🎜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!

    Déclaration de ce site Web
    Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
    Tutoriels populaires
    Plus>
    Derniers téléchargements
    Plus>
    effets Web
    Code source du site Web
    Matériel du site Web
    Modèle frontal