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

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

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-03 01:04:29316parcourir

Why Am I Getting

Point-virgule inattendu avant le reste dans Go : une explication détaillée

Votre code Go rencontre une erreur inhabituelle à la ligne 21 : "erreur de syntaxe : inattendue point-virgule ou nouvelle ligne avant." Malgré votre affirmation, un examen plus approfondi révèle qu'il y a effectivement un point-virgule (;) avant l'instruction "else" sur cette ligne.

Le problème principal ici provient de la règle d'insertion automatique de point-virgule de Go. Normalement, les points-virgules sont facultatifs dans Go ; cependant, le compilateur les insérera automatiquement à la fin de certaines lignes pour maintenir l'intégrité syntaxique. Un tel cas est celui où une ligne se termine par une accolade fermante '}', comme celle qui ferme l'instruction « if » à la ligne 21.

Ce comportement constitue un obstacle pour l'instruction « else » suivante. Dans Go, le bloc "else" doit être écrit sur la même ligne que l'accolade fermante de l'instruction "if". Par conséquent, le compilateur ne peut pas ajouter un point-virgule à la fin de la ligne 21 car cela créerait deux instructions distinctes, ce qui est une syntaxe incorrecte.

Pour résoudre ce problème, placez le mot-clé "else" directement après l'accolade fermante sur ligne 21 :

<code class="go">if subject == current_mid {
    current_topic[predicate] = append(current_topic[predicate], object)
} else {
    processTopic(current_mid, current_topic, xmlFile)
    current_topic = make(map[string][]string)
}</code>

Cette modification garantit que les instructions "if" et "else" forment une seule instruction composée, comme l'exige la syntaxe de Go.

Concernant les erreurs aux lignes 28 et 32, ils concernent des déclarations hors du champ d'application de la fonction "principale". Dans Go, les instructions doivent être placées dans le corps de la fonction à laquelle elles appartiennent. Pour corriger ces erreurs, incluez les instructions entre accolades '}' dans le corps de la fonction "principale".

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