Heim >Backend-Entwicklung >Golang >Warum zeigt mein Go-Compiler Fehler „Deklariert, aber nicht verwendet' für Variablen an, die ich verwende?
Problem:
Beim Kompilieren eines Go Funktion markiert der Compiler mehrere Variablen als „deklariert und nicht verwendet“, obwohl die Variablen eindeutig innerhalb der verwendet werden Code.
func img(w http.ResponseWriter, r *http.Request, c appengine.Context, u *user.User) { key := datastore.NewKey("Comparison", r.FormValue("id"), 0, nil) side := r.FormValue("side") comparison := new(Comparison) err := datastore.Get(c, key, comparison) check(err) var m Image if( side == "left"){ m, _, err := image.Decode(bytes.NewBuffer(comparison.Left)) } else { m, _, err := image.Decode(bytes.NewBuffer(comparison.Right)) } check(err) w.Header().Set("Content-type", "image/jpeg") jpeg.Encode(w, m, nil) }
Der Compiler generiert Warnungen für:
Lösung:
Wie von @kostix hervorgehoben, Der Fehler entsteht, weil die Variable m im Rahmen der if-Anweisung definiert ist. Um dieses Problem zu lösen, verschieben Sie die Deklaration von m in den Gültigkeitsbereich der Funktion und stellen Sie sicher, dass sie in der gesamten Funktion zugänglich ist:
func img(w http.ResponseWriter, r *http.Request, c appengine.Context, u *user.User) { key := datastore.NewKey("Comparison", r.FormValue("id"), 0, nil) side := r.FormValue("side") comparison := new(Comparison) err := datastore.Get(c, key, comparison) check(err) // Declare m in the function's scope var m Image if( side == "left"){ m, _, err := image.Decode(bytes.NewBuffer(comparison.Left)) } else { m, _, err := image.Decode(bytes.NewBuffer(comparison.Right)) } check(err) w.Header().Set("Content-type", "image/jpeg") jpeg.Encode(w, m, nil) }
Jetzt wird die Variable m einmal deklariert und in beiden if-Zweigen verwendet, wodurch der Compiler korrigiert wird wahrgenommenes Missverhältnis. Darüber hinaus sollten auch die Compiler-Warnungen für err und key verschwinden, da diese auch innerhalb der Funktion verwendet werden.
Das obige ist der detaillierte Inhalt vonWarum zeigt mein Go-Compiler Fehler „Deklariert, aber nicht verwendet' für Variablen an, die ich verwende?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!