「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Go で「構文エラー: 他の前に予期しないセミコロンがあります」が発生するのはなぜですか?

Go で「構文エラー: 他の前に予期しないセミコロンがあります」が発生するのはなぜですか?

2024 年 11 月 7 日に公開
ブラウズ:365

Why Am I Getting \

Go の Else の前に予期しないセミコロンがあります: 詳細な説明

Go コードの 21 行目で異常なエラーが発生しました: 「構文エラー: 予期せぬ」セミコロンまたは改行を他の文字の前に置きます。」あなたの主張にもかかわらず、詳しく調べると、この行の "else" ステートメントの前に確かにセミコロン (;) があることがわかります。

ここでの中心的な問題は、Go の自動セミコロン挿入ルールに起因しています。通常、Go ではセミコロンはオプションです。ただし、コンパイラは構文の整合性を維持するために、特定の行の末尾にそれらを自動的に挿入します。このようなケースの 1 つは、行 21 の "if" ステートメントを閉じるものなど、行が右中かっこ '}' で終わっている場合です。

この動作は、後続の "else" ステートメントに障害をもたらします。 Go では、「else」ブロックは「if」ステートメントの右中括弧と同じ行に記述する必要があります。したがって、コンパイラは 21 行目の末尾にセミコロンを追加できません。これは 2 つの別個のステートメントを作成することになり、これは構文が正しくありません。

この問題を解決するには、右中括弧の直後に「else」キーワードを配置します。 21 行目:

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

この変更により、Go の構文で要求されるように、"if" ステートメントと "else" ステートメントが単一の複合ステートメントを形成するようになります。 「main」関数のスコープ外のステートメント。 Go では、ステートメントは、それが属する関数の本体内で囲む必要があります。これらのエラーを修正するには、「main」関数の本体内に中括弧 '}' 内のステートメントを含めます。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3