Heim > Backend-Entwicklung > Golang > Wie ruft man mithilfe von Reflection eine Liste von Methodennamen von einer Schnittstelle in Go ab?

Wie ruft man mithilfe von Reflection eine Liste von Methodennamen von einer Schnittstelle in Go ab?

Barbara Streisand
Freigeben: 2024-10-30 09:15:27
Original
967 Leute haben es durchsucht

How do you retrieve a list of method names from an interface in Go using reflection?

Eine Liste von Methodennamen von einer Schnittstelle abrufen

In Go ermöglicht Reflektion die Überprüfung und Manipulation der internen Struktur eines Programms zur Laufzeit . Dazu gehört die Möglichkeit, auf Informationen über einen Schnittstellentyp zuzugreifen, beispielsweise auf seine Methodennamen.

Betrachten Sie die folgende Schnittstelle:

<code class="go">type FooService interface {
    Foo1(x int) int
    Foo2(x string) string
}</code>
Nach dem Login kopieren

Um eine Liste der Methodennamen für diese Schnittstelle zu erhalten, verwenden Sie Reflection:

  1. Erhalten Sie den Reflect.Type für den Schnittstellentyp:
<code class="go">t := reflect.TypeOf((*FooService)(nil)).Elem()</code>
Nach dem Login kopieren

Diese Zeile ruft den Reflect.Type für den konkreten Typ ab das die FooService-Schnittstelle implementiert.

  1. Anzahl der Methoden abrufen:
<code class="go">for i := 0; i < t.NumMethod(); i++ {</code>
Nach dem Login kopieren

Die Funktion NumMethod() gibt die Anzahl der Methoden zurück die Schnittstelle.

  1. Methodennamen abrufen:
<code class="go">s = append(s, t.Method(i).Name)</code>
Nach dem Login kopieren

Die Method(i)-Funktion gibt ein Reflect.Method-Objekt zurück, das die Methode darstellt am Index i. Das Namensfeld dieses Objekts enthält den Namen der Methode.

Die resultierenden Listen enthalten die Methodennamen ["Foo1", "Foo2"].

Erläuterungen:

  • Die Syntax (*FooService)(nil) wird verwendet, um einen Zeiger auf eine anonyme Instanz der FooService-Schnittstelle zu erstellen. Dies ist erforderlich, um den Reflect.Type für die Schnittstelle zu erhalten.
  • Die Elem()-Methode gibt den Reflect.Type für den konkreten Typ zurück, der die Schnittstelle implementiert, und nicht den Schnittstellentyp selbst.
  • Die Funktion NumMethod() gibt die Anzahl der in der Schnittstelle deklarierten Methoden zurück, auch wenn der konkrete Typ zusätzliche Methoden implementiert.

Das obige ist der detaillierte Inhalt vonWie ruft man mithilfe von Reflection eine Liste von Methodennamen von einer Schnittstelle in Go ab?. 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