ホームページ > バックエンド開発 > Golang > Go で「構文エラー: 他の前に予期しないセミコロンがあります」が発生するのはなぜですか?

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

Mary-Kate Olsen
リリース: 2024-11-03 01:04:29
オリジナル
405 人が閲覧しました

Why Am I Getting

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

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

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

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

この問題を解決するには、右中括弧の直後に「else」キーワードを配置します。 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>
ログイン後にコピー

この変更により、Go の構文で要求されているように、"if" ステートメントと "else" ステートメントが単一の複合ステートメントを形成するようになります。

28 行目と 28 行目のエラーについて32 では、それらは「main」関数のスコープ外のステートメントに関連しています。 Go では、ステートメントは、それが属する関数の本体内で囲む必要があります。これらのエラーを修正するには、「main」関数の本体内に中括弧 '}' 内のステートメントを含めます。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート