Maison >développement back-end >Golang >Pourquoi Go génère-t-il une erreur lors de l'initialisation d'une structure dans une boucle For ?
Dans Go, une erreur de syntaxe survient lors de l'initialisation d'une structure dans une boucle for. Utiliser un pointeur vers une structure fonctionne bien, mais des variables locales sont parfois nécessaires. Cet article approfondit le problème et propose une solution.
L'extrait de code problématique :
for r := Request{}; r.err == nil; r.id++ { r.line, r.err = input.ReadSlice(0x0a) channel <- r }
En simplifiant le code, nous obtenons :
for r := Request{}; r.err == nil; r.id++ { r.line, r.err = input.ReadSlice(0x0a) channel <- r }
Ce code résulte dans l'erreur suivante :
expected boolean or range expression, found simple statement (missing parentheses around composite literal?) (and 1 more errors)
L'erreur provient de l'ambiguïté dans l'analyse de l'accolade ouvrante ('{'). Il peut faire partie d'un littéral composite ou du début du bloc for.
Pour résoudre cette ambiguïté, des parenthèses sont ajoutées autour du littéral composite :
for r := (Request{}); r.err == nil; r.id++ { r.line, r.err = input.ReadSlice(0x0a) channel <- r }
En entourant l'initialisation de la structure entre parenthèses, nous indiquons explicitement qu'il s'agit d'un littéral composite et ne fait pas partie de la syntaxe de la boucle for.
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!