Heim  >  Artikel  >  Backend-Entwicklung  >  Warum meldet mein Go-Code trotz seiner Verwendung einen Fehler „Deklariert und nicht verwendet“ für die Variable „prev“?

Warum meldet mein Go-Code trotz seiner Verwendung einen Fehler „Deklariert und nicht verwendet“ für die Variable „prev“?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-31 20:14:02148Durchsuche

Why Does My Go Code  Report a

Deklarierter und nicht verwendeter Fehler in Go, trotz Variablenverwendung

Im folgenden Go-Code meldet der Compiler einen „deklarierten und nicht verwendeten“ Fehler für die Variable 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>

Verstehen des Fehlers

Der Compiler erkennt korrekt, dass die Variable prev deklariert, aber nicht verwendet wird. Dies bedeutet, dass die deklarierte Variable prev in der Funktion fibonacci niemals im Code referenziert wird.

Behebung des Problems

Der Fehler kann behoben werden, indem die Funktion fibonacci so geändert wird, dass sie die Variable prev korrekt verwendet. Die Absicht des Codes besteht wahrscheinlich darin, die Variable prev mit der Zuweisung prev := temp zu ändern. Diese Zuweisung erstellt jedoch eine neue lokale Variable mit dem Namen prev, die vor dem umgebenden Bereich verborgen ist. Stattdessen sollte die korrekte Zuweisung den =-Operator ohne das Deklarationsschlüsselwort verwenden:

<code class="go">func fibonacci() func() int {
    prev := 0
    curr := 1
    return func() int {
        temp := curr
        curr := curr + prev
        prev = temp
        return curr
    }
}</code>

Durch Entfernen des Deklarationsschlüsselworts (:=) aus der zweiten prev-Zuweisung ändert der Code die geerbte prev-Variable korrekt. Dadurch wird der Compilerfehler behoben und der Code kann wie vorgesehen funktionieren.

Das obige ist der detaillierte Inhalt vonWarum meldet mein Go-Code trotz seiner Verwendung einen Fehler „Deklariert und nicht verwendet“ für die Variable „prev“?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn