Dans Go, la portée des variables détermine leur accessibilité dans différents blocs de code. Lorsque des variables locales et des constantes de niveau supérieur ou des variables au niveau du package partagent le même nom, un problème courant se pose : comment faire référence à la variable constante ou au niveau du package au lieu de la variable locale ?
Considérez le programme Go suivant :
package main import "fmt" const name = "Yosua" // or var name string = "James" func main() { name := "Jobs" fmt.Println(name) }
Ce programme déclare un nom de constante au niveau du package, mais dans la fonction principale, une autre variable nommée name est déclarée au niveau de la fonction. Lorsque le programme s'exécute, il imprime « Jobs », qui est la valeur du nom de la variable locale au niveau de la fonction. Comment pouvez-vous accéder au nom de la constante au niveau du package à la place ?
Malheureusement, Go ne fournit pas de moyen direct de faire référence aux identifiants de niveau supérieur dans la portée d'un bloc où une variable locale du même nom existe. Selon la spécification Go pour les déclarations et la portée, un identifiant déclaré localement est prioritaire dans sa portée.
Pour accéder à la fois à la variable de niveau supérieur et à la variable locale, vous pouvez utiliser noms différents ou utilisez l'une des solutions de contournement suivantes :
cname := name name := "Jobs" fmt.Println(name) fmt.Println(cname)
Cette méthode enregistre la valeur de la constante ou de la variable de niveau supérieur avant de créer la variable locale .
func getName() string { return name } name := "Jobs" fmt.Println(name) fmt.Println(getName())
Cette approche fournit une autre façon d'accéder à la variable de niveau supérieur en définissant une fonction qui renvoie sa valeur.
Les deux méthodes renvoient le même résultat :
Jobs Yosua
Cela démontre que vous pouvez accéder à la variable de niveau supérieur tout en utilisant une variable locale du même nom en utilisant une de ces solutions de contournement. Cependant, il est important de se rappeler que les variables locales ont priorité sur les identifiants de niveau supérieur dans leur portée.
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!