次のコード スニペットでは、エラー メッセージ「prog.go:13: prev は宣言されており、宣言されていません」が表示されます。
<code class="go">package main import "fmt" // fibonacci is a function that returns // a function that returns an int. func fibonacci() func() int { prev := 0 curr := 1 return func() int { temp := curr curr := curr + prev prev := temp return curr } } func main() { f := fibonacci() for i := 0; i < 10; i++ { fmt.Println(f()) } }</code>
関数 fibonacci 内で変数 prev が宣言されていますが、一度も使用されていないため、エラーが発生します。具体的には、行 prev := temp は prev という名前の新しいローカル変数を作成します。この変数は、外側のスコープで宣言された prev 変数とは異なります。このエラーを修正するには、新しいローカル変数を作成する代わりに、外側のスコープから prev 変数を使用するようにコードを変更する必要があります。
修正されたコードは次のとおりです:
<code class="go">package main import "fmt" // fibonacci is a function that returns // a function that returns an int. func fibonacci() func() int { prev := 0 curr := 1 return func() int { temp := curr curr = curr + prev prev = temp return curr } } func main() { f := fibonacci() for i := 0; i < 10; i++ { fmt.Println(f()) } }</code>
以上がGo コードで「prev は宣言されており使用されていません」というエラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。