Referenzieren von Konstanten und Variablen auf Paketebene über Variablen auf Funktionsebene
In Go ist es üblich, Shadowing zum Deklarieren von Variablen oder Konstanten zu verwenden mit demselben Namen in verschiedenen Bereichen. Dies kann zwar nützlich sein, aber manchmal müssen Sie auf die ursprüngliche Konstante oder Variable auf Paketebene statt auf die Variable auf Funktionsebene verweisen.
Leider ist es in Go nicht möglich, direkt darauf zu verweisen die Konstante oder Variable auf Paketebene, wenn eine lokale Variable mit demselben Namen vorhanden ist. Dies liegt am Konzept des Gültigkeitsbereichs und daran, dass der Go-Compiler lokale Variablen gegenüber Deklarationen höherer Ebene bevorzugt.
Um auf die ursprüngliche Konstante oder Variable auf Paketebene zuzugreifen, müssen Sie alternative Techniken verwenden. Ein Ansatz besteht darin, den Wert in einer temporären Variablen zu speichern, bevor die lokale Variable neu zugewiesen wird:
cname := name name = "Jobs" fmt.Println(name) // Prints "Jobs" fmt.Println(cname) // Prints "Yosua"
Eine andere Option besteht darin, eine Funktion zu erstellen, die Zugriff auf die Konstante oder Variable auf Paketebene bietet:
func getName() string { return name } name = "Jobs" fmt.Println(name) // Prints "Jobs" fmt.Println(getName()) // Prints "Yosua"
Durch die Verwendung dieser Techniken können Sie gleichzeitig auf die lokale Variable und die ursprüngliche Konstante oder Variable auf Paketebene zugreifen. Es ist jedoch zu beachten, dass diese Problemumgehungen möglicherweise nicht immer die eleganteste oder effizienteste Lösung sind und dass sorgfältige Überlegungen angestellt werden sollten, um Namenskonflikte in Ihrem Code zu vermeiden.
Das obige ist der detaillierte Inhalt vonWie greife ich beim Shadowing in Go auf Variablen auf Paketebene oder konstante Variablen zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!