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()
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()
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!