Heim > Backend-Entwicklung > Golang > Wie listet man die in einer Go-Schnittstelle definierten Methodennamen programmgesteuert auf?

Wie listet man die in einer Go-Schnittstelle definierten Methodennamen programmgesteuert auf?

Barbara Streisand
Freigeben: 2024-11-03 08:51:29
Original
986 Leute haben es durchsucht

How do you programmatically list the method names defined in a Go interface?

Methodennamen in einem Schnittstellentyp auflisten

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

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

Erklärung:

  1. reflect.TypeOf( (*FooService)(nil)).Elem() ruft den Reflect.Type der Schnittstelle ab.
  2. t.NumMethod() gibt die Anzahl der Methoden in der Schnittstelle zurück.
  3. t.Method (i) ruft die i-te Methode der Schnittstelle ab.
  4. t.Method(i).Name gibt den Namen der Methode zurück.

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!

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