Maison > développement back-end > Golang > Comment fonctionnent la portée variable et l'observation dans Go ?

Comment fonctionnent la portée variable et l'observation dans Go ?

Susan Sarandon
Libérer: 2024-12-10 21:49:11
original
631 Les gens l'ont consulté

How Does Variable Scope and Shadowing Work in Go?

Portée variable et observation dans Go : un guide complet

Dans Go, comprendre la portée et l'observation des variables est crucial pour écrire du code propre et maintenable . La portée de la variable définit la visibilité d'une variable au sein d'un programme, tandis que l'observation fait référence à la re-déclaration d'une variable du même nom dans une portée imbriquée.

Portée des variables dans Go

Go utilise la portée lexicale, ce qui signifie que la portée d'une variable est déterminée par sa position dans le code. Il existe cinq niveaux de portée différents :

  • Bloc d'univers : identifiants prédéclarés (par exemple, vrai, faux)
  • Bloc de package : identifiants déclarés au niveau supérieur
  • Bloc de fichiers : noms des packages
  • Corps de la fonction : récepteurs de méthode, paramètres de fonction et résultat variables
  • Portée du bloc : constantes, variables et types déclarés dans un bloc

Observation de variable dans Go

L'observation se produit lorsqu'une variable dans une portée interne est déclarée avec le même nom qu'une variable dans une portée externe. Dans de tels cas, la variable dans la portée interne a priorité et masque la variable externe.

Avantages de la portée et de l'observation des variables

  • Intégrité des données : Les données dans les portées externes ne peuvent pas être accidentellement consultées ou modifiées par des variables dans les portées internes portées.
  • Portée limitée : Les variables peuvent être étendues à des blocs de code spécifiques, réduisant ainsi le risque d'effets secondaires provenant d'autres parties du programme.

Différentes formes d'observation variable

Dans Go, l'observation variable peut être réalisée dans plusieurs façons :

  • Utiliser une affectation abrégée dans les instructions :

    for i := 'a'; i < 'b'; i++ {
      // i shadowed inside this block
    }
    Copier après la connexion
  • Utiliser {.. .} paires :

    {
      i := "hi" //new local var
    }
    Copier après la connexion
  • Utilisation des appels de fonction :

    func fun(i int) {
      i++ //use as local var without side effect
    }
    Copier après la connexion
  • Shadowing global variables :

    var i int = 1 //global
    func main() {
      i := 10 //Shadowing global var
    }
    Copier après la connexion

Échantillons et exemples de code

Portée des variables :

package main

func main() {
    i := 10 //scope: main
    fmt.Println(i) //output: 10
}
Copier après la connexion

Dans cet exemple, i est déclaré dans la fonction principale et n'est accessible qu'à l'intérieur de celle-ci. function.

Observation de variable :

package main

func shadow() {
    x := 10 //shadowing global variable x
    fmt.Println(x) //output: 10
}

var x int = 1 //global variable

func main() {
    fmt.Println(x) //output: 1
    shadow()
}
Copier après la connexion

Dans cet exemple, la variable globale x est masquée par la variable locale x dans la fonction d'ombre. Par conséquent, lorsque x est accédé à l'intérieur de la fonction shadow, il fait référence à la variable locale avec la valeur 10.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal