Maison > développement back-end > Golang > Pourquoi est-ce que j'obtiens l'erreur « Point-virgule ou nouvelle ligne inattendu avant le reste » dans mon code Go ?

Pourquoi est-ce que j'obtiens l'erreur « Point-virgule ou nouvelle ligne inattendu avant le reste » dans mon code Go ?

Patricia Arquette
Libérer: 2024-11-02 19:17:02
original
979 Les gens l'ont consulté

Why am I getting the

Point-virgule ou nouvelle ligne inattendu avant else

L'erreur "Point-virgule ou nouvelle ligne inattendu avant else" se produit lorsqu'il y a un point-virgule ou une nouvelle ligne avant le mot-clé else dans un if -autre déclaration. Dans le code fourni, l'erreur est à la ligne 21 :

for err == nil{
    subject, predicate, object := parseTriple(line)
    if subject == current_mid{
        current_topic[predicate] = append(current_topic[predicate], object)
    }
    else if len(current_mid) > 0{
        processTopic(current_mid, current_topic, xmlFile)
        current_topic = make(map[string][]string)
    }
    current_mid = subject
    line, err = r.ReadString('\n')
}
Copier après la connexion

Dans ce cas, il y a un caractère de nouvelle ligne après l'accolade fermante du bloc if, qui est à l'origine de l'erreur. Pour corriger l'erreur, l'instruction else if doit être placée sur la même ligne que l'accolade fermante :

for err == nil{
    subject, predicate, object := parseTriple(line)
    if subject == current_mid{
        current_topic[predicate] = append(current_topic[predicate], object)
    } else if len(current_mid) > 0{
        processTopic(current_mid, current_topic, xmlFile)
        current_topic = make(map[string][]string)
    }
    current_mid = subject
    line, err = r.ReadString('\n')
}
Copier après la connexion

Explication :

Dans Go, le point-virgule est utilisé pour terminer les instructions. Cependant, Go insère également automatiquement un point-virgule à la fin de certaines lignes, y compris les lignes qui se terminent par une accolade fermante }. Cela signifie que si vous avez un bloc if qui s'étend sur plusieurs lignes, vous devez placer l'instruction else sur la même ligne que l'accolade fermante, sinon Go insérera un point-virgule après l'accolade fermante et provoquera une erreur de syntaxe.

Les messages d'erreur sur les lignes 28 et 32 ​​(« déclaration de non-déclaration en dehors du corps de la fonction ») sont également causés par l'erreur sur la ligne 21. L'accolade fermante sur la ligne 21 n'est pas correctement terminée, donc Go traite les lignes qui la suivent. comme s'ils étaient en dehors de la fonction principale. Pour corriger ces erreurs, vous devez d'abord corriger l'erreur à la ligne 21.

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!

source:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal