Heim > Backend-Entwicklung > Golang > Wie drucke ich den verschachtelten Zeigerwert einer Struktur in Golang ohne die Zeigeradresse?

Wie drucke ich den verschachtelten Zeigerwert einer Struktur in Golang ohne die Zeigeradresse?

DDD
Freigeben: 2024-12-07 17:04:11
Original
312 Leute haben es durchsucht

How to Print a Struct's Nested Pointer Value in Golang Without the Pointer Address?

So drucken Sie Strukturwerte mit Zeiger in Golang

Bedenken Sie den folgenden Codeausschnitt:

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 ==== %+v \n", a) // output: v ==== &{a:1 B:0xc42000e204}
}
Nach dem Login kopieren

Hier: Sie möchten den Wert von B ohne seine Zeigerdarstellung ausgeben. Um dies zu erreichen, gibt es einige Möglichkeiten:

1. Implementierung der Stringer-Schnittstelle:

Die Funktion fmt.Printf() ruft die Methode String() auf, wenn sie für den zu druckenden Typ vorhanden ist. Implementieren Sie die String()-Methode sowohl für A- als auch für B-Strukturen:

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)
}
Nach dem Login kopieren

Mit dieser Implementierung lautet die Ausgabe:

v ==== A{a:1, B:B{b:2}}
Nach dem Login kopieren
Nach dem Login kopieren

2. Anpassen des Druckformats:

Sie können die Ausgabezeichenfolge direkt so formatieren, dass sie nur die gewünschten Felder enthält:

fmt.Printf("v ==== A{a:%d, B:B{b:%d}}\n", a.a, a.B.b)
Nach dem Login kopieren

Ausgabe:

v ==== A{a:1, B:B{b:2}}
Nach dem Login kopieren
Nach dem Login kopieren

3. Referenzieren von Werten in der Struktur:

Da B ein Feld innerhalb von A ist, können Sie direkt auf dessen Wert verweisen:

fmt.Printf("v ==== A{a:%d, B:%v}", a.a, a.B)
Nach dem Login kopieren

Ausgabe:

v ==== A{a:1, B:&{b:2}}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie drucke ich den verschachtelten Zeigerwert einer Struktur in Golang ohne die Zeigeradresse?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage