Anpassen der Druckausgabe von Strukturen mit Zeigern
Beim Drucken von Strukturen mit Zeigern in Go ist die Verwendung des Standardformatbezeichners %v möglicherweise nicht möglich das gewünschte Ergebnis. Dies liegt daran, dass die Zeigeradresse anstelle des Inhalts der referenzierten Struktur gedruckt wird.
Um dieses Problem zu beheben, gibt es zwei Hauptansätze: Definieren Sie eine benutzerdefinierte String-Methode für den Strukturtyp oder formatieren Sie die Ausgabe manuell.
Definieren einer benutzerdefinierten String-Methode
Die bevorzugte Methode ist die Implementierung der Stringer-Schnittstelle für die beteiligten Strukturtypen. Dies kann durch Hinzufügen einer String()-String-Methode zur Struktur erreicht werden. Die an die printf-Funktion übergebene Formatzeichenfolge ruft stattdessen diese Methode auf.
Zum Beispiel:
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.Printf("v ==== %v \n", a) // Prints "v ==== A{a:1, B:B{b:2}}" }
Manuelle Formatierung
Wenn nicht Wenn Sie eine String-Methode verwenden, können Sie die Ausgabe manuell mithilfe der Formatbezeichner der einzelnen Strukturmitglieder formatieren.
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("v ==== A{a:%d, B:B{b:%d}}\n", a.a, a.B.b) }
Das obige ist der detaillierte Inhalt vonWie kann ich die Druckausgabe von Go für Strukturen mit Zeigern anpassen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!