„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > 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?

Veröffentlicht am 11.11.2024
Durchsuche:792

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:

type FooService interface {
    Foo1(x int) int
    Foo2(x string) string
}

So erhalten Sie eine Liste der Methodennamen für diese Schnittstelle mithilfe von Reflection:

  1. Erhalten Sie den Reflect.Type für den Schnittstellentyp:
t := reflect.TypeOf((*FooService)(nil)).Elem()

This Zeile ruft den Reflect.Type für den konkreten Typ ab, der die FooService-Schnittstelle implementiert.

  1. Rufen Sie die Anzahl der Methoden ab:
for i := 0; i 

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

  1. Erhalten Sie die Methodennamen:
s = append(s, t.Method(i).Name)

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

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

Erläuterungen:

  • Die (*FooService)(nil)-Syntax 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.
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3