Maison > Article > développement back-end > Comment accéder à une constante ou une variable de niveau supérieur dans Go lorsqu'une variable locale du même nom existe ?
Dans Go, il est possible de déclarer des variables avec différentes portées : locale (portée de la fonction) et de niveau supérieur (portée du package ou du fichier). Parfois, vous pouvez rencontrer une situation dans laquelle vous souhaitez faire référence à une constante ou une variable de niveau supérieur dans la portée de la fonction, où une variable locale portant le même nom existe.
Considérez l'extrait de code suivant :
package main import "fmt" const name = "Yosua" // or var name string = "James" func main() { name := "Jobs" fmt.Println(name) }
Question : Comment pouvons-nous faire référence au nom de la constante au lieu du nom local variable?
Réponse :
L'accès à la variable de portée englobante en présence d'une variable locale du même nom n'est pas possible. Lorsque la variable locale est dans la portée, elle masque la variable externe dans la fonction, la rendant inaccessible.
La spécification du langage Go indique :
An identifier declared in a block may be redeclared in an inner block. While the identifier of the inner declaration is in scope, it denotes the entity declared by the inner declaration.
Alternatives :
Si vous devez accéder simultanément aux variables de niveau supérieur et locales, envisagez d'utiliser des noms distincts. Cependant, si cela n'est pas réalisable, vous pouvez recourir aux alternatives suivantes :
Attribuer temporairement à une nouvelle variable :
Pour exemple :
cname := name name := "Jobs" fmt.Println(name) fmt.Println(cname)
Exposer indirectement la variable de niveau supérieur :
Pour exemple :
func getName() string { return name } name := "Jobs" fmt.Println(name) fmt.Println(getName())
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!