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())
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()
Alternativ kann eine einzeilige Lösung mithilfe der Typzusicherung erreicht werden:
t := reflect.TypeOf((*error)(nil)).Elem()
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!