Go コンパイラ エラー: 変数が使用されているときに「宣言されており、使用されていません」
Go コンパイラは、「変数が宣言されており、使用されていない」というエラーを報告していますimg 関数の特定の変数は、使用されているにもかかわらず、「使用されていません」と表示されます。この問題を理解するために、コードとエラー メッセージを詳しく調べてみましょう。
HTTP リクエストを処理する img 関数は、データストアに接続し、HTTP リクエスト フォームの値に基づいてイメージ比較を取得します。 「サイド」フォームの値に応じて、関数はイメージ バイトの 1 つを image.Image.
にデコードしようとします。ただし、コンパイラは、変数 m、err、key が宣言されているが使用されていないとエラーを出します。
この混乱は、Go の変数のスコープに起因しています。ブロック内で宣言された変数、または if ステートメントは、それらのブロック内でのみアクセス可能です。元のコード:
この問題を修正するには、m の宣言を if ブロックの外側の関数の中に移動します。スコープ:
var m Image if( side == "left"){ m, _, err = image.Decode(bytes.NewBuffer(comparison.Left)) } else { m, _, err = image.Decode(bytes.NewBuffer(comparison.Right)) }
この変更により、関数全体で m にアクセスできるようになり、その変数の「宣言されているが使用されていない」エラーが解決されます。
変数宣言を調整し、適切なスコープ内で変数を使用することにより、コンパイラ エラーを解決し、変数が実際に次のように使用されることを確認する必要があります。 img 関数内で意図されています。
以上が変数が使用されている場合でも、Go コンパイラーで「宣言済みおよび未使用」エラーが表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。