Heim > Backend-Entwicklung > Golang > Wie erhalte ich den Reflect.Type einer nicht initialisierten Schnittstelle in Go?

Wie erhalte ich den Reflect.Type einer nicht initialisierten Schnittstelle in Go?

Mary-Kate Olsen
Freigeben: 2024-12-19 11:09:14
Original
280 Leute haben es durchsucht

How Do I Get the reflect.Type of an Uninitialized Interface in Go?

Bestimmen des Reflect.Type einer Schnittstelle

Um festzustellen, ob ein Typ eine Schnittstelle mithilfe des Reflect-Pakets implementiert, ist es erforderlich, Folgendes bereitzustellen ein Reflect.Type für Reflect.Type.Implements(). Allerdings kann es manchmal rätselhaft erscheinen, diesen Typ zu ermitteln, insbesondere bei nicht initialisierten Schnittstellen wie Fehler.

Nicht initialisierte Fehlerschnittstelle

Versuch, den Typ eines nicht initialisierten Fehlers (Schnittstelle) zu ermitteln ) Die Verwendung von „reflect.TypeOf(err).Kind()“ führt zu einer Panik, wenn „Kind()“ aktiviert ist aufgerufen.

Lösung

Um den Typ eines schnittstellenähnlichen Fehlers korrekt zu erhalten, muss zunächst ein Zeiger auf die Schnittstelle erstellt und dann Elem() verwendet werden der resultierende Typ. Dies kann auf zwei Arten erreicht werden:

Ausführliche Methode:

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

Einzeilige Methode:

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

Indem Sie diese Ansätze befolgen, können Sie den Reflect.Type einer Schnittstelle effektiv abrufen, unabhängig von ihrem Initialisierungsstatus.

Das obige ist der detaillierte Inhalt vonWie erhalte ich den Reflect.Type einer nicht initialisierten Schnittstelle in Go?. 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