Sobes.tech
Junior

Wie kann man den Typ einer Schnittstelle in Go überprüfen?

sobes.tech KI

Antwort von AI

In Go wird häufig Type Assertion oder Type Switch verwendet, um den Typ eines Interfaces zu überprüfen.

Wenn Sie eine Variabel vom Interface-Typ haben, z.B. var i interface{}, und überprüfen möchten, ob sie ein bestimmtes Interface implementiert oder einen bestimmten Typ hat, können Sie es so machen:

if v, ok := i.(MyInterface); ok {
    // i implementiert MyInterface, v ist der konvertierte Typ
}

Für die Überprüfung mehrerer Typen ist es praktisch, einen Type Switch zu verwenden:

switch v := i.(type) {
case MyInterface:
    // i implementiert MyInterface
case *MyStruct:
    // i ist ein Zeiger auf MyStruct
default:
    // anderer Typ
}

Wenn Sie den Typ dynamischer überprüfen möchten, können Sie das Paket reflect verwenden:

import "reflect"

t := reflect.TypeOf(i)
if t.Implements(reflect.TypeOf((*MyInterface)(nil)).Elem()) {
    // i implementiert MyInterface
}

So reichen für einfache Fälle die Type Assertion oder der Type Switch aus, für komplexere Fälle ist Reflection notwendig.