Maison  >  Article  >  développement back-end  >  Pourquoi est-ce que j'obtiens « Erreur de syntaxe : point-virgule ou nouvelle ligne inattendu avant le reste » dans mon code Go ?

Pourquoi est-ce que j'obtiens « Erreur de syntaxe : point-virgule ou nouvelle ligne inattendu avant le reste » dans mon code Go ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-02 12:40:02178parcourir

Why am I Getting

Erreur de syntaxe imprévue : point-virgule inattendu ou nouvelle ligne avant "Else" dans Go

Le compilateur Go signale un message d'erreur énigmatique : "erreur de syntaxe : point-virgule ou nouvelle ligne inattendu avant le reste." Malgré une inspection minutieuse de la ligne 21, le code semble dépourvu de tout point-virgule ou nouvelle ligne incriminé.

En approfondissant, nous découvrons deux erreurs supplémentaires déroutantes aux lignes 28 et 32 : "déclaration de non-déclaration en dehors du corps de la fonction". Ces instructions résident dans la fonction main() et ne devraient pas être affectées par l'accolade fermante qui termine la fonction.

Les preuves suggèrent que les erreurs susmentionnées proviennent d'un problème sous-jacent à la ligne 21. Le langage Go introduit un point-virgule unique. comportement de gestion :

  • Les points-virgules sont automatiquement insérés à la fin des lignes contenant des jetons spécifiques, y compris les accolades fermantes }.
  • En conséquence, un point-virgule est ajouté après l'accolade fermante d'un if block.
  • Pour les instructions if {...} else {...}, cette insertion de point-virgule crée une erreur de syntaxe, car les points-virgules ne sont pas autorisés dans la clause else.

Pour résoudre ce problème, la clause else doit être placée sur la même ligne que l'accolade fermante du bloc if. Par exemple :

if len(current_mid) > 0 {
    processTopic(current_mid, current_topic, xmlFile)
} else {
    current_topic = make(map[string][]string)
}

L'erreur du compilateur concernant « déclaration de non-déclaration en dehors du corps de la fonction » découle de l'exigence stricte de Go que les déclarations en dehors des corps de fonction soient des déclarations. Dans le cas des lignes 28 et 32, les expressions ne sont ni des déclarations ni une partie du corps de la fonction, d'où les messages d'erreur.

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:
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