Heim > Backend-Entwicklung > Golang > Wie funktionieren Variable Scope und Shadowing in Go?

Wie funktionieren Variable Scope und Shadowing in Go?

Susan Sarandon
Freigeben: 2024-12-10 21:49:11
Original
724 Leute haben es durchsucht

How Does Variable Scope and Shadowing Work in Go?

Variablenumfang und Shadowing in Go: Ein umfassender Leitfaden

In Go ist das Verständnis des Variablenumfangs und des Shadowing von entscheidender Bedeutung, um sauberen und wartbaren Code zu schreiben . Der Variablenbereich definiert die Sichtbarkeit einer Variablen innerhalb eines Programms, während sich Shadowing auf die erneute Deklaration einer Variablen mit demselben Namen in einem verschachtelten Bereich bezieht.

Variablenbereich in Go

Go verwendet lexikalisches Scoping, was bedeutet, dass der Gültigkeitsbereich einer Variablen durch ihre Position im Code bestimmt wird. Es gibt fünf verschiedene Geltungsbereichsebenen:

  • Universumsblock: Vordeklarierte Bezeichner (z. B. wahr, falsch)
  • Paketblock: auf oberster Ebene deklarierte Bezeichner
  • Dateiblock : Paketnamen
  • Funktionskörper: Methodenempfänger, Funktionsparameter und Ergebnisvariablen
  • Block Geltungsbereich: Konstanten, Variablen und Typen, die innerhalb eines Blocks deklariert werden

Variablenschatten in Go

Schatten tritt auf, wenn eine Variable in einem inneren Bereich mit deklariert wird Gleicher Name wie eine Variable in einem äußeren Bereich. In solchen Fällen hat die Variable im inneren Bereich Vorrang und überschattet die äußere Variable.

Vorteile von Variable Scoping und Shadowing

  • Datenintegrität : Auf Daten in äußeren Bereichen kann nicht versehentlich durch Variablen in inneren Bereichen zugegriffen oder diese geändert werden Bereiche.
  • Begrenzter Bereich: Variablen können auf bestimmte Codeblöcke beschränkt werden, wodurch das Risiko von Nebenwirkungen durch andere Teile des Programms verringert wird.

Verschiedene Formen der variablen Beschattung

In Go kann die variable Beschattung auf verschiedene Arten erreicht werden Möglichkeiten:

  • Verwendung von Kurzschriftzuweisungen innerhalb von Anweisungen:

    for i := 'a'; i < 'b'; i++ {
      // i shadowed inside this block
    }
    Nach dem Login kopieren
  • Verwendung von {.. .} Paare:

    {
      i := "hi" //new local var
    }
    Nach dem Login kopieren
  • Funktionsaufrufe verwenden:

    func fun(i int) {
      i++ //use as local var without side effect
    }
    Nach dem Login kopieren
  • Shadowing global Variablen:

    var i int = 1 //global
    func main() {
      i := 10 //Shadowing global var
    }
    Nach dem Login kopieren

Codebeispiele und Beispiele

Variablenbereich:

package main

func main() {
    i := 10 //scope: main
    fmt.Println(i) //output: 10
}
Nach dem Login kopieren

In diesem Beispiel wird i innerhalb der Hauptfunktion deklariert und ist nur innerhalb dieser zugänglich Funktion.

Variablenschatten:

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()
}
Nach dem Login kopieren

In diesem Beispiel wird die globale Variable x durch die lokale Variable x in der Schattenfunktion schattiert. Wenn also innerhalb der Schattenfunktion auf x zugegriffen wird, verweist es auf die lokale Variable mit dem Wert 10.

Das obige ist der detaillierte Inhalt vonWie funktionieren Variable Scope und Shadowing in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage