Heim > Backend-Entwicklung > Golang > Wie kann ich die Schnittstellenimplementierung mithilfe von „reflect.Type' von Go zuverlässig bestimmen?

Wie kann ich die Schnittstellenimplementierung mithilfe von „reflect.Type' von Go zuverlässig bestimmen?

Barbara Streisand
Freigeben: 2024-12-26 07:42:10
Original
474 Leute haben es durchsucht

How Can I Reliably Determine Interface Implementation Using Go's `reflect.Type`?

Bestimmen der Schnittstellenimplementierung mit Reflect.Type

Bei der objektorientierten Programmierung ist es wichtig zu prüfen, ob ein Typ eine bestimmte Schnittstelle implementiert. Um dies im Reflection-Paket von Go effektiv zu tun, ist eine Reflect.Type-Darstellung der Schnittstelle erforderlich. Allerdings kann es schwierig sein, diesen Typ zu erhalten, insbesondere wenn es sich um nicht initialisierte Schnittstellentypen wie Fehler handelt.

Betrachten Sie den folgenden Versuch, der zu einer Panik führt:

var err error
fmt.Printf("%#v\n", reflect.TypeOf(err).Kind())
Nach dem Login kopieren

Um dieses Problem zu beheben , muss die Funktion „reflect.TypeOf“ für einen Zeiger auf den Schnittstellenwert aufgerufen werden, nicht für den Wert selbst. Darüber hinaus kann die Elem()-Methode verwendet werden, um den zugrunde liegenden Typ des Zeigers zu erhalten, der den Schnittstellentyp darstellt:

var err error
t := reflect.TypeOf(&err).Elem()
Nach dem Login kopieren

Alternativ kann eine einzeilige Lösung mithilfe der Typzusicherung erreicht werden:

t := reflect.TypeOf((*error)(nil)).Elem()
Nach dem Login kopieren

Jetzt kann der erhaltene Reflect.Type an Reflect.Type.Implements() übergeben werden, um zu bestimmen, ob die gewünschte Schnittstelle implementiert wird.

Das obige ist der detaillierte Inhalt vonWie kann ich die Schnittstellenimplementierung mithilfe von „reflect.Type' von Go zuverlässig bestimmen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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