Heim > Backend-Entwicklung > Golang > Wie kann ich sowohl Eigenschaften als auch Methoden einer Go-Struktur sichern?

Wie kann ich sowohl Eigenschaften als auch Methoden einer Go-Struktur sichern?

Barbara Streisand
Freigeben: 2024-12-30 19:18:15
Original
218 Leute haben es durchsucht

How Can I Dump Both Properties and Methods of a Go Struct?

Dumping-Methoden von Strukturen in Golang

Während Golangs „fmt“-Paket eine „Printf“-Methode zum Dumpen der Eigenschaften einer Struktur bereitstellt, gibt es eine Sie müssen sowohl Eigenschaften als auch Methoden einer Struktur abrufen. Betrachten Sie das folgende Beispiel:

type Foo struct {
    Prop string
}
func (f Foo)Bar() string {
    return f.Prop
}
Nach dem Login kopieren

Um die Existenz der Methode „Bar()“ in einer initialisierten Instanz vom Typ „Foo“ zu überprüfen, sollten Sie das Paket „reflect“ verwenden. So würden Sie es machen:

fooType := reflect.TypeOf(&Foo{})
for i := 0; i < fooType.NumMethod(); i++ {
    method := fooType.Method(i)
    fmt.Println(method.Name)
}
Nach dem Login kopieren

Wenn Sie feststellen möchten, ob ein Typ einen bestimmten Methodensatz implementiert, sind Schnittstellen und Typzusicherungen möglicherweise praktischer. Ein Beispiel:

func implementsBar(v interface{}) bool {
    type Barer interface {
        Bar() string
    }
    _, ok := v.(Barer)
    return ok
}
Nach dem Login kopieren

Um eine Instanz von „Foo“ für die „Bar()“-Methode zu testen:

fmt.Println("Foo implements the Bar method:", implementsBar(Foo{}))
Nach dem Login kopieren

Alternativ, um explizit zu bestätigen, dass ein Typ über bestimmte Methoden verfügt Kompilierzeit:

var _ Barer = Foo{}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich sowohl Eigenschaften als auch Methoden einer Go-Struktur sichern?. 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage