フィボナッチ関数のエラー: 宣言されているが使用されていない変数
Go で提供されたコードは、クロージャーを使用してフィボナッチ数列を計算しようとします。ただし、コンパイラはエラー フラグを立てます: 「prog.go:13: prev は宣言されており、使用されていません。」
説明:
内部クロージャー関数では、変数という名前の prev は、:= 代入演算子を使用して宣言されます。これにより、現在のスコープに新しい変数が作成されますが、使用されることはありません。この問題を解決するには、:= を = に置き換えて、temp から継承された prev 変数に値を割り当てます。
書き換えられたコード:
<code class="go">curr := curr + prev prev = temp</code>
エラーの理由:
Go の := 演算子は現在のスコープ内に新しい変数を作成しますが、= は既存の変数に値を割り当てます。 := を使用すると、新しい変数が作成され、古い変数は効果的にシャドウされ、もう使用されなくなります。
注:
この問題は、次の場合にのみ発生します。内部クロージャで prev 変数を宣言します。外側のフィボナッチ関数で宣言された prev 変数は正しく使用されています。
以上がフィボナッチ関数で「prev」変数に未使用のフラグが付いているのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。