ホームページ  >  記事  >  バックエンド開発  >  Go コードで「予期しないセミコロンまたは改行が else の前にあります」というエラーが発生するのはなぜですか?

Go コードで「予期しないセミコロンまたは改行が else の前にあります」というエラーが発生するのはなぜですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-02 19:17:02903ブラウズ

Why am I getting the

else の前に予期しないセミコロンまたは改行があります

if の else キーワードの前にセミコロンまたは改行文字がある場合、「else の前に予期しないセミコロンまたは改行があります」というエラーが発生します-else ステートメント。提供されているコードでは、エラーは行 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')
}

この場合、if ブロックの右中括弧の後に改行文字があり、これがエラーの原因となっています。このエラーを修正するには、else if ステートメントを右中括弧と同じ行に配置する必要があります。

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')
}

説明:

Go では、ステートメントを終了するためにセミコロンが使用されます。ただし、Go は、右中括弧 } で終わる行など、特定の行の末尾にセミコロンを自動的に挿入します。これは、複数行にまたがる if ブロックがある場合、else ステートメントを閉じ中括弧と同じ行に置く必要があることを意味します。そうしないと、Go が閉じ括弧の後にセミコロンを挿入し、構文エラーが発生します。

28 行目と 32 行目のエラー メッセージ (「関数本体外の非宣言ステートメント」) も、21 行目のエラーによって引き起こされます。21 行目の右中かっこが適切に終了していないため、Go はそれ以降の行を処理しています。まるでメイン関数の外にいるかのように。これらのエラーを修正するには、まず 21 行目のエラーを修正する必要があります。

以上がGo コードで「予期しないセミコロンまたは改行が else の前にあります」というエラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。