English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Golang Grund教程

Golang Kontrollanweisungen

Golang Funktion & Methode

Golang Struktur

Golang Slice & Array

Golang Zeichenkette (String)

Golang Zeiger

Golang Schnittstelle

Golang Parallelität

Golang Ausnahme (Error)

Golang andere Artikel

Go Zeiger auf Zeiger (Doppelter Zeiger)

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