Wie greife ich in Go auf eine Konstante oder Variable der obersten Ebene zu, wenn eine lokale Variable mit demselben Namen vorhanden ist?

DDD
Freigeben: 2024-11-15 19:40:03
Original
703 Leute haben es durchsucht

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

Bezieht sich auf Variablen auf Konstanten- oder Paketebene innerhalb des Funktionsumfangs

In Go ist es möglich, Variablen mit unterschiedlichen Bereichen zu deklarieren: lokal (Funktionsbereich) und auf oberster Ebene (Paket- oder Dateibereich). Gelegentlich kann es vorkommen, dass Sie auf eine Konstante oder Variable der obersten Ebene innerhalb des Funktionsumfangs verweisen möchten, in der eine lokale Variable mit demselben Namen vorhanden ist.

Bedenken Sie den folgenden Codeausschnitt:

package main

import "fmt"

const name = "Yosua"
// or var name string = "James"

func main() {
    name := "Jobs"
    fmt.Println(name)
}
Nach dem Login kopieren

Frage: Wie können wir auf den Konstantennamen statt auf die lokale Variable verweisen?

Antwort:

Zugriff auf die umschließende Bereichsvariable in Anwesenheit einer gleichnamigen lokalen Variablen ist nicht möglich. Während sich die lokale Variable im Gültigkeitsbereich befindet, überschattet sie die äußere Variable innerhalb der Funktion und macht sie unzugänglich.

In der Go-Sprachspezifikation heißt es:

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.
Nach dem Login kopieren

Alternativen:

Wenn Sie gleichzeitig auf die Variablen der obersten Ebene und auf die lokalen Variablen zugreifen müssen, sollten Sie die Verwendung unterschiedlicher Namen in Betracht ziehen. Wenn dies jedoch nicht möglich ist, können Sie auf die folgenden Alternativen zurückgreifen:

  1. Vorübergehend einer neuen Variablen zuweisen:

    • Speichern der Wert der Variablen der obersten Ebene in einer temporären Variablen, bevor er der lokalen Variablen zugewiesen wird.
    • Zum Beispiel:

      cname := name
      name := "Jobs"
      fmt.Println(name)
      fmt.Println(cname)
      Nach dem Login kopieren
  2. Die Variable der obersten Ebene indirekt verfügbar machen:

    • Erstellen Sie eine Funktion oder Methode, die den Wert der Variable der obersten Ebene zurückgibt.
    • Zum Beispiel :

      func getName() string {
       return name
      }
      
      name := "Jobs"
      fmt.Println(name)
      fmt.Println(getName())
      Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie greife ich in Go auf eine Konstante oder Variable der obersten Ebene zu, wenn eine lokale Variable mit demselben Namen vorhanden ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage