Maison > Article > développement back-end > Comment déclarer des variables dans des instructions conditionnelles en Go ?
Portée des variables dans Go : déclaration de variables dans des instructions conditionnelles
Question :
Pendant l'apprentissage de Go, un développeur a eu du mal à déclarer des variables dans une instruction if...else, rencontrant des erreurs indiquant que les variables ont été déclarées mais non utilisées. Comment ce problème peut-il être résolu ?
Réponse :
Dans Go, la portée des variables est limitée au bloc dans lequel elles sont déclarées. Par conséquent, déclarer des variables dans des instructions conditionnelles ne les rend accessibles que dans ce bloc spécifique.
Pour comprendre ce concept, considérons l'exemple suivant :
package main import "fmt" func main() { a := 1 fmt.Println(a) // 1 { a := 2 fmt.Println(a) // 2 } fmt.Println(a) // 1 }
Dans cet exemple, la variable a est déclarée deux fois : une fois à l’extérieur et une fois à l’intérieur d’un bloc. La première déclaration (a := 1) est valide pour l'ensemble de la fonction principale, tandis que la deuxième déclaration (a := 2) n'est valide que dans le bloc.
Ce comportement est analogue dans les instructions conditionnelles :
if strings.EqualFold(r.Method, "GET") || strings.EqualFold(r.Method, "") { req, er := http.NewRequest(r.Method, r.Uri, b) } else { req, er := http.NewRequest(r.Method, r.Uri, b) } if er != nil { // Do something... }
Dans cet exemple, les variables req et er sont déclarées respectivement dans les branches if et else. Cependant, lorsque le programme sort de ces blocs, les variables ne sont plus accessibles.
Pour résoudre ce problème, déclarez les variables en dehors de l'instruction conditionnelle et utilisez l'opérateur d'affectation (=) pour modifier leurs valeurs :
var req *http.Request var er error if strings.EqualFold(r.Method, "GET") || strings.EqualFold(r.Method, "") { req, er = http.NewRequest(r.Method, r.Uri, b) } else { req, er = http.NewRequest(r.Method, r.Uri, b) } if er != nil { // Do something... }
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!