Sie können nicht. Während die lokale Variable name
im Geltungsbereich ist, bezeichnet der Name name
die lokale Variable. Und es gibt kein "Qualifikationsmerkmal", um auf Top-Level-Bezeichner zu verweisen.
Spec: Declarations and scope:
Eine Kennung in einem Block erklärt, kann in einem inneren Block neu deklariert werden. Während der Bezeichner der inneren Deklaration im Gültigkeitsbereich liegt, bezeichnet er die Entität, die von der inneren Deklaration deklariert wird.
Wenn Sie gleichzeitig auf die Konstanten/Variablen der obersten Ebene und die lokale Variable zugreifen müssen, verwenden Sie andere Namen.
Wenn aus irgendeinem Grund können Sie nicht oder wollen nicht, können Sie den Wert der obersten Ebene konstante oder variable erste speichern:
cname := name
name := "Jobs"
fmt.Println(name)
fmt.Println(cname)
Oder Sie können auch andere Mittel zur Verfügung stellen, um darauf zuzugreifen , z.B eine Funktion:
func getName() string {
return name
}
name := "Jobs"
fmt.Println(name)
fmt.Println(getName())
Ausgang in beiden Fällen (versuchen, sie auf den Go Playground):
Jobs
Yosua
Dies wird nicht kompilieren. Ich muss fragen, warum willst du das machen? – squiguy
Ah Entschuldigung, ich habe vergessen, die Package-Level-Variable zu löschen, damit sie nicht kompiliert werden kann. Ich möchte nur sicherstellen, dass Golang es schafft. –