関数外のセミコロンとステートメントが Go コードでエラーを引き起こすのはなぜですか?

Susan Sarandon
リリース: 2024-11-02 21:28:30
オリジナル
703 人が閲覧しました

Why Are Semicolons and Statements Outside Functions Causing Errors in My Go Code?

未解決の構文エラー: 「予期しないセミコロン」および「非宣言ステートメント」の問題を調べる

提供されたコードでは、いくつかの問題が発生します。具体的には行 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
...
ログイン後にコピー

これらのエラーに対処すると、コードは正常にコンパイルされるようになります。今後同様の問題を回避するには、次のルールに注意してください。

  1. 「else」と「else if」は、対応する if ブロックの閉じ中括弧と同じ行で宣言する必要があります。
  2. 非宣言ステートメントは関数本体内に配置する必要があります。

以上が関数外のセミコロンとステートメントが Go コードでエラーを引き起こすのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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