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()
Einzeilige Methode:
t := reflect.TypeOf((*error)(nil)).Elem()
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!