Maison >développement back-end >Golang >Comment accéder aux constantes et aux variables au niveau du package lorsqu'elles sont masquées par des variables locales dans Go ?

Comment accéder aux constantes et aux variables au niveau du package lorsqu'elles sont masquées par des variables locales dans Go ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-14 22:33:02778parcourir

How to Access Constants and Package-Level Variables When Shadowed by Local Variables in Go?

Se référant aux constantes et aux variables au niveau du package à l'intérieur des fonctions

Dans le code Go fourni, dans la fonction principale, un nom de variable locale est défini, qui masque la constante ou variable au niveau du package avec le même nom. Cela peut prêter à confusion et à un comportement incorrect.

Comprendre l'observation

Dans Go, lorsqu'une nouvelle variable est déclarée dans une fonction, elle a priorité sur toute autre variable du même nom définie à un moment donné. niveau supérieur (par exemple, dans une portée au niveau du package). C'est ce qu'on appelle l'observation de variable.

Résolution

Pour faire référence au nom de la constante ou de la variable au niveau du package dans la fonction principale, nous ne pouvons pas utiliser directement le nom de l'identifiant car il désigne la fonction. -variable de niveau. Au lieu de cela, nous pouvons utiliser l'une des approches suivantes :

  • Enregistrement de la valeur constante ou variable : nous pouvons stocker temporairement la valeur de la constante ou de la variable au niveau du package dans un fichier local. variable avec un nom différent. Par exemple :
const name = "Yosua"

func main() {
    localName := name
    name := "Jobs"
    fmt.Println(name) // Jobs
    fmt.Println(localName) // Yosua
}
  • Fournir une fonction Getter : Nous pouvons créer une fonction qui renvoie la valeur de la constante ou de la variable au niveau du package. Par exemple :
const name = "Yosua"

func getName() string {
    return name
}

func main() {
    name := "Jobs"
    fmt.Println(name) // Jobs
    fmt.Println(getName()) // Yosua
}

Remarque

Si une variable au niveau du package est déclarée à l'aide de var au lieu de const, elle peut être masquée et réaffectée dans les fonctions. Dans de tels cas, l'utilisation de l'une des approches ci-dessus garantit que la valeur d'origine est préservé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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn