未解決の構文エラー: 「予期しないセミコロン」および「非宣言ステートメント」の問題を調べる
提供されたコードでは、いくつかの問題が発生します。具体的には行 21、28、および 32 のエラーです。各エラーとその解決策を詳しく見てみましょう。
行 21 のエラー: "else" の前に予期しないセミコロンまたは改行があります
このエラーは、Go ではキーワード「else」を、対応する「if」または「else if」ステートメントの右中括弧と同じ行に配置する必要があるために発生します。コードでは、「if」ブロックは 20 行目でセミコロンで終わり、これにより自動的に改行文字が挿入されます。その結果、21 行目の "else" ステートメントは別のステートメントになり、構文エラーが発生します。
解決策:
"else" キーワードを、21 行目の "else" キーワードを同じ行に移動します。以下に示すように、"if" ブロックの右中括弧:
... } else if len(current_mid) > 0 { processTopic(current_mid, current_topic, xmlFile) current_topic = make(map[string][]string) } ...
行 28 と 32 のエラー: 関数本体の外にある非宣言ステートメント
これらのエラーmain() 関数の本体の外側にステートメント (processTopic 呼び出し) が配置されていることを示します。 Go では、非宣言ステートメントは関数本体内に記述する必要があります。
解決策:
以下に示すように、processTopic コールを main() 関数本体に戻します。
... } else if len(current_mid) > 0 { processTopic(current_mid, current_topic, xmlFile) current_topic = make(map[string][]string) } processTopic(current_mid, current_topic, xmlFile) // Moved inside function body ...
これらのエラーに対処すると、コードは正常にコンパイルされるようになります。今後同様の問題を回避するには、次のルールに注意してください。
以上が関数外のセミコロンとステートメントが Go コードでエラーを引き起こすのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。