Heim > Backend-Entwicklung > Golang > Wie rufe ich den „reflect.Type' einer Schnittstelle in Go ab?

Wie rufe ich den „reflect.Type' einer Schnittstelle in Go ab?

DDD
Freigeben: 2024-12-24 04:45:10
Original
735 Leute haben es durchsucht

How to Retrieve the `reflect.Type` of an Interface in Go?

Abrufen des Reflect.Type einer Schnittstelle

Um festzustellen, ob ein Typ eine Schnittstelle über das Reflect-Paket implementiert, muss ein Reflect.Type an übergeben werden reflektieren.Type.Implements(). In diesem Artikel wird der Prozess zum Abrufen solcher Typen untersucht.

Ermitteln des Typs einer nicht initialisierten Schnittstelle

Versuch, den Typ einer nicht initialisierten Fehlerschnittstelle (die eine Schnittstelle ist) abzurufen type) die direkte Verwendung von reflekt.TypeOf() führt zu einer Panik, wenn versucht wird, auf die Kind()-Methode des erhaltenen Typs zuzugreifen. Um dieses Problem zu umgehen, können die folgenden Ansätze verwendet werden:

Ansatz 1:

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

Dieser Ansatz beinhaltet das Erhalten des Typs eines Zeigers auf die Schnittstelle und Anschließend wird mit Elem() der zugrunde liegende konkrete Typ (Element) abgerufen.

Ansatz 2 (Einzeiler):

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

Dieser Ansatz nutzt die Tatsache, dass ein Null-Schnittstellenwert für jeden Schnittstellentyp typzugesichert werden kann. Indem Sie einen Nullzeiger auf den gewünschten Schnittstellentyp erstellen und dessen Typ abrufen, können Sie den konkreten Typ direkt erhalten, ohne die Adresse der Variablen übernehmen zu müssen.

Das obige ist der detaillierte Inhalt vonWie rufe ich den „reflect.Type' einer Schnittstelle in Go ab?. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage