Heim > Artikel > Backend-Entwicklung > Warum gibt Go einen Fehler „deklariert und nicht verwendet“ aus, selbst wenn eine Variable initialisiert zu sein scheint?
Wenn in Go ein Fehler „Deklariert und nicht verwendet“ auftritt, können Programmierer davon ausgehen, dass dies der Fall ist haben bereits eine Variable in ihrem Code initialisiert. Wie unten dargestellt, kann die Ursache jedoch in der vorzeitigen Deklaration von Variablen liegen.
Bedenken Sie den folgenden Codeausschnitt:
<code class="go">package main import "fmt" // fibonacci is a function that returns // a function that returns an int. func fibonacci() func() int { var prev int // Declare a variable named prev var curr = 1 // Initialize curr with the value 1 return func() int { var temp = curr // Declare a variable named temp curr := curr + prev // Assign curr to the sum of curr and prev prev := temp // Assign prev to the value of temp return curr } } func main() { f := fibonacci() for i := 0; i < 10; i++ { fmt.Println(f()) } }</code>
Dieser Code dient dazu, eine Folge von Fibonacci-Zahlen zu generieren . Wir stoßen jedoch auf einen Fehler mit der Meldung „prog.go:13: prev deklariert und nicht verwendet“.
Um diesen Fehler zu beheben, müssen wir den Unterschied zwischen Variablendeklaration und Initialisierung verstehen. In diesem Code deklarieren wir eine Variable mit dem Namen prev mit der Zeile var prev int, was angibt, dass sie einen ganzzahligen Wert enthält. Wir initialisieren es jedoch nicht mit einem tatsächlichen Wert. Die Zuweisung prev := temp, die später im Code erfolgt, erstellt eine neue lokale Variable mit dem Namen prev im aktuellen Bereich und überschattet die äußere Variable prev. Folglich bleibt die ursprüngliche prev-Variable nicht initialisiert.
Um dieses Problem zu beheben, können wir die Deklaration prev := temp durch eine Zuweisung prev = temp ersetzen, die die vom umgebenden Bereich geerbte prev-Variable ändert. Darüber hinaus sollten wir die Zuweisung curr := curr prev in der vorherigen Zeile überarbeiten, um = anstelle von := zu verwenden, um eine ordnungsgemäße Variablenzuweisung sicherzustellen. Der korrigierte Code ist unten dargestellt:
<code class="go">package main import "fmt" // fibonacci is a function that returns // a function that returns an int. func fibonacci() func() int { var prev, curr int // Declare and initialize prev and curr within the function scope return func() int { var temp = curr curr = curr + prev prev = temp return curr } } func main() { f := fibonacci() for i := 0; i < 10; i++ { fmt.Println(f()) } }</code>
Dieser korrigierte Code beseitigt die vorzeitige Deklaration von prev und stellt eine ordnungsgemäße Variableninitialisierung sicher, wodurch der Fehler „deklariert und nicht verwendet“ behoben wird.
Das obige ist der detaillierte Inhalt vonWarum gibt Go einen Fehler „deklariert und nicht verwendet“ aus, selbst wenn eine Variable initialisiert zu sein scheint?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!