Heim >Backend-Entwicklung >Golang >Wie greife ich auf die Speicheradresse einer Go-Struktur zu und speichere sie?

Wie greife ich auf die Speicheradresse einer Go-Struktur zu und speichere sie?

Barbara Streisand
Barbara StreisandOriginal
2024-11-29 13:37:25366Durchsuche

How Do I Access and Store the Memory Address of a Go Struct?

Zugriff auf und Speichern von Speicheradressen von Go-Strukturen

Das Verständnis des Verhaltens von Speicheradressen und Zeigern ist bei der Programmierung von entscheidender Bedeutung, insbesondere bei komplexen Datenstrukturen wie Go-Strukturen. Dieser Artikel befasst sich mit den Nuancen des Druckens und Bearbeitens von Strukturadressen.

Betrachten Sie das folgende Go-Programm:

type Rect struct {
 width int
 name int 
}

func main() {
 r := Rect{4,6}
 p := &r
 p.width = 15

fmt.Println("-----",&p,r,p,&r)
}

Beim Ausführen dieses Programms beobachten Sie möglicherweise eine Ausgabe im Format _____0x40c130 {15 6} &{15 6} &{15 6}. Während diese Ausgabe einige Einblicke in die Speicherorte bietet, zeigt sie nicht explizit die Adresse der r-Variablen an.

Um die Adresse von r direkt auszugeben, müssen wir die von fmt.Println( ). Stattdessen können wir eine Formatzeichenfolge angeben, um die Ausgabe zu steuern. Das Verb %p wird zum Drucken von Zeigern und Adressen verwendet. Wenn Sie die Zeile fmt.Println() wie folgt ändern, wird die Adresse von r gedruckt:

fmt.Printf("%p\n", &r)

Dadurch wird die Adresse von r im Hexadezimalformat ausgegeben, z. B. 0x414020.

Zusätzlich Wenn Sie die Adresse von r in einer Variablen speichern möchten, können Sie Folgendes verwenden Syntax:

addr := &r

Dadurch wird die Speicheradresse von r der Variablen addr zugewiesen. Sie können dann addr verwenden, um indirekt auf die in der Rect-Struktur enthaltenen Werte zuzugreifen oder diese zu ändern.

Denken Sie daran, dass es bei der Arbeit mit Zeigern und Adressen wichtig ist, den Kontext und Zweck zu berücksichtigen, um deren Verwendung vollständig zu verstehen.

Das obige ist der detaillierte Inhalt vonWie greife ich auf die Speicheradresse einer Go-Struktur zu und speichere sie?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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