Maison > développement back-end > Golang > Comment accéder à une constante ou une variable de niveau supérieur dans Go lorsqu'une variable locale du même nom existe ?

Comment accéder à une constante ou une variable de niveau supérieur dans Go lorsqu'une variable locale du même nom existe ?

DDD
Libérer: 2024-11-15 19:40:03
original
832 Les gens l'ont consulté

How do I access a top-level constant or variable in Go when a local variable with the same name exists?

Faire référence à des variables au niveau d'une constante ou d'un package dans la portée de la fonction

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)
}
Copier après la connexion

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.
Copier après la connexion

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 :

  1. Attribuer temporairement à une nouvelle variable :

    • Store la valeur de la variable de niveau supérieur dans une variable temporaire avant de l'attribuer à la variable locale.
    • Pour exemple :

      cname := name
      name := "Jobs"
      fmt.Println(name)
      fmt.Println(cname)
      Copier après la connexion
  2. Exposer indirectement la variable de niveau supérieur :

    • Créer une fonction ou méthode qui renvoie la valeur de la variable de niveau supérieur.
    • Pour exemple :

      func getName() string {
       return name
      }
      
      name := "Jobs"
      fmt.Println(name)
      fmt.Println(getName())
      Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal