ホームページ  >  記事  >  バックエンド開発  >  変数の初期化にもかかわらず、Go が「prev 宣言され、使用されていません」エラーをスローするのはなぜですか?

変数の初期化にもかかわらず、Go が「prev 宣言され、使用されていません」エラーをスローするのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-31 03:37:01905ブラウズ

Why Does Go Throw

Go - エラー: "prev 宣言されていて使用されていません"、変数の初期化にもかかわらず

Go で、"prev 宣言されていて使用されていない" というエラーが発生しました変数が初期化されているように見える場合、「used」というメッセージが表示されると、困惑することがあります。特定のケースを調べてみましょう:

<code class="go">package main

import "fmt"

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 Declared and not used」エラーが発生します。

解決策:

この問題を解決するには、以下を変更します。 = への代入。これにより、temp の値が継承された prev 変数に割り当てられます:

<code class="go">prev = temp</code>

同様に、次の行は次のようになります:

<code class="go">curr = curr + prev</code>

これにより、prev が適切に使用され、エラーが解決されます。 .

以上が変数の初期化にもかかわらず、Go が「prev 宣言され、使用されていません」エラーをスローするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。