English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Ein Zeiger in der Programmiersprache Go ist eine Variable, die die Speicheradresse einer anderen Variable speichert. Ein Zeiger ist ein spezieller Variable, daher kann er auf jede Art von Variable zeigen. Grundsätzlich sieht es aus wie eine Kette von Zeigern. Wenn wir einen Zeiger auf Zeiger definieren, speichert der erste Zeiger die Adresse des zweiten Zeigers. Dieses Konzept wird manchmal alsDoppelte Zeiger。
Wie kann man in Golang einen Zeiger auf Zeiger deklarieren?
den Zeiger als Pointer deklarieren, ähnlich wie in Go, müssen wir vor dem Namen des Zeigers einen zusätzlichen' * 。Normalerweise, wenn wirvar Schlüsselwortund Typdeklaration beim Erstellen von Zeiger- Variablen, können Sie dies tun.
Beispiel1:In dem folgenden Programm, Zeigerpt2speichertpt1Die Adresse des Zeigers. Dereferenzierungpt2das ist* pt2gibt die Variablevoder Sie können auch sagen Zeigerpt1den Wert. Wenn Sie die Adresse** pt2,Gibt die VariablevDer Wert, das ist100。
package main import "fmt" func main() { //Integer-Typ Variable var V int = 100 //Einen Zeiger erhalten //Der Integer-Typ var pt1 *int = &V //Den Zeiger, der darauf zeigt, erhalten //Der Zeiger auf pt1speichern //Den Zeiger auf die Speicheradresse von pt1in pt umwandeln2 var pt2 **int = &pt1 fmt.Println("Der Wert der Variable V ist =", V) fmt.Println("Die Adresse der Variable V ist =", &V) fmt.Println("pt1Der Wert ist =1) fmt.Println("pt1Die Adresse ist =1) fmt.Println("pt2Der Wert ist =2) //Dereferenzierung //Zeiger auf Zeiger fmt.Println("pt2Der Wert der Adresse ist (*pt2) = ", *pt2) //Doppelte Zeiger geben den Wert von Variable V zurück fmt.Println("*(pt2Der Wert an der Adresse) oder **pt2 = ", **pt2) }
Ausgabe:
Der Wert der Variable V ist = 100 Die Adresse der Variable V ist = 0xc000062090 pt1Der Wert ist = 0xc000062090 pt1Die Adresse ist = 0xc00008c018 pt2Der Wert ist = 0xc00008c018 pt2Der Wert der Adresse ist (*pt2) = 0xc000062090 *(pt2Der Wert an der Adresse) oder **pt2 = 100
Beispiel2:Lassen Sie uns einige Änderungen im obigen Programm vornehmen. Durch die Verwendung von Dereferenzierung ändern wir den Wert des Zeigers, um neue Werte für den Zeiger zuzuweisen, wie folgt:
// Ein Go-Programm, um das Konzept der Zeiger auf Zeiger zu erläutern package main import "fmt" func main() { // Definieren Sie eine Variable des Typs int var v int = 100 // Ein Zeiger auf einen Integer-Typ var pt1 *int = &v //Den Zeiger, der darauf zeigt, erhalten //Der Zeiger auf pt1speichern //Den Zeiger auf die Speicheradresse von pt1in pt umwandeln2 var pt2 **int = &pt1 fmt.Println("Der Wert der Variable v ist =", v) //Durch Zuweisung den Wert von v ändern //Der Zeiger auf den Zeiger pt1neuer Wert *pt1 = 200 fmt.Println("pt ändern"1Der Wert, der in v gespeichert wird, ist = "v" //Durch Zuweisung den Wert von v ändern //Der Zeiger auf den Zeiger pt2neuer Wert **pt2 = 300 fmt.Println("pt ändern"2Der Wert, der in v gespeichert wird, ist = "v" }
Ausgabe:
Der Wert der Variable v ist = 100 pt ändern1Der Wert, der in v gespeichert wird, ist = 200 pt ändern2Der Wert, der in v gespeichert wird, ist = 300
Verwandte Kenntnisse:Go-Punkt