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>
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.
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!