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 サイトの他の関連記事を参照してください。