Heim >Backend-Entwicklung >Golang >Wie kann ich die Druckausgabe von Go für Strukturen mit Zeigern anpassen?

Wie kann ich die Druckausgabe von Go für Strukturen mit Zeigern anpassen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-12 16:02:12854Durchsuche

How to Customize Go's Print Output for Structs with Pointers?

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!

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