In Go definieren Schnittstellen einen Vertrag von Methoden, die ein Typ implementieren muss. Wenn Sie zur Laufzeit mit Schnittstellen interagieren, müssen Sie möglicherweise auf die Namen ihrer Methoden zugreifen.
Problem:
Berücksichtigen Sie die folgende Schnittstellendefinition:
type FooService interface { Foo1(x int) int Foo2(x string) string }
Wie können Sie programmgesteuert eine Liste der Methodennamen, d. h. ["Foo1", "Foo2"], aus der FooService-Schnittstelle generieren?
Antwort:
Um die Liste der Methodennamen von einem Schnittstellentyp abzurufen, können Sie Laufzeitreflexion verwenden:
<code class="go">t := reflect.TypeOf((*FooService)(nil)).Elem() var s []string for i := 0; i < t.NumMethod(); i++ { s = append(s, t.Method(i).Name) }</code>
Erklärung:
Playground-Beispiel:
https://go.dev/play/p/6cXnZKiKVw1
Tipp:
Lesen Sie die Dokumentation zum Thema „Wie bekomme ich?“ der „reflect.Type“ einer Schnittstelle? für Einblicke zum Erhalten des Reflect.Type einer Schnittstelle.
Das obige ist der detaillierte Inhalt vonWie listet man die in einer Go-Schnittstelle definierten Methodennamen programmgesteuert auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!