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
Barbara StreisandOriginal
2024-12-30 19:18:15227Durchsuche

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
}

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)
}

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
}

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

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

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

var _ Barer = Foo{}

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!

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