Maison >développement back-end >Golang >Pourquoi mon compilateur Go affiche-t-il des erreurs « Déclarées mais non utilisées » pour les variables que j'utilise ?
Problème :
Lors de la compilation d'un Go fonction, le compilateur marque plusieurs variables comme « déclarées et non utilisées », bien que les variables soient clairement utilisées dans la fonction 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) }
Le compilateur génère des avertissements pour :
Solution :
Comme l'a souligné @kostix, l'erreur survient car la variable m est définie dans le cadre de l'instruction if. Pour résoudre ce problème, déplacez la déclaration de m dans la portée de la fonction, en vous assurant qu'elle est accessible dans toute la fonction :
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) }
Maintenant, la variable m est déclarée une fois et utilisée dans les deux branches if, corrigeant ainsi le comportement du compilateur. inadéquation perçue. De plus, les avertissements du compilateur pour err et key devraient également disparaître car ils sont également utilisés dans la fonction.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!