Heim >Backend-Entwicklung >Golang >Wie drucke ich den Wert und nicht den Zeiger verschachtelter Strukturen in Go?
Drucken von Strukturwerten mit Zeigern in Go
In Go wird beim Drucken eines Strukturwerts, der Zeiger enthält, normalerweise stattdessen die Zeigeradresse gedruckt des tatsächlichen Wertes. Dies kann problematisch sein, wenn Sie versuchen, den Inhalt einer verschachtelten Struktur zu überprüfen.
So drucken Sie den B-Strukturwert anstelle des Zeigers
Um dieses Problem zu lösen, müssen Sie haben zwei Möglichkeiten:
Implementieren Sie den Stringer Schnittstelle:
Implementieren Sie die String()-Methode für die A- und B-Strukturen. Diese Methode gibt eine formatierte Zeichenfolgendarstellung der Struktur zurück. Geben Sie in der Implementierung die gewünschten Werte anstelle der Zeiger aus.
package main import "fmt" type A struct { a int32 B *B } type B struct { b int32 } func (aa *A) String() string { return fmt.Sprintf("A{a:%d, B:%v}", aa.a, *aa.B) } func (bb *B) String() string { return fmt.Sprintf("B{b:%d}", bb.b) } func main() { a := &A{a: 1, B: &B{b: 2}} fmt.Println(a) }
Werte manuell drucken:
Greifen Sie auf die tatsächlichen Werte der zu B strukturieren Sie manuell und drucken Sie sie direkt aus.
package main import "fmt" type A struct { a int32 B *B } type B struct { b int32 } func main() { a := &A{a: 1, B: &B{b: 2}} fmt.Printf("A{a:%d, B:{b:%d}}\n", a.a, a.B.b) }
Das obige ist der detaillierte Inhalt vonWie drucke ich den Wert und nicht den Zeiger verschachtelter Strukturen in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!