Sobes.tech
Junior — Middle

Wie kann man feststellen, ob eine bestimmte Struktur eine gegebene Schnittstelle implementiert?

sobes.tech KI

Antwort von AI

In Go wird die Implementierung eines Interfaces implizit überprüft: Wenn ein Typ alle in der Schnittstelle deklarierten Methoden enthält, implementiert er diese Schnittstelle automatisch.

Um festzustellen, ob eine Struktur eine gegebene Schnittstelle implementiert, kann man:

  1. Versuchen, eine Instanz der Struktur einer Variablen vom Schnittstellentyp zuzuweisen — wenn die Kompilierung erfolgreich ist, bedeutet dies, dass die Struktur die Schnittstelle implementiert.
  2. Eine statische Überprüfung mit _var _ verwenden:
var _ MyInterface = (*MyStruct)(nil)

Wenn dieser Code ohne Fehler kompiliert, bedeutet dies, dass MyStruct die Schnittstelle MyInterface implementiert.

Beispiel:

type MyInterface interface {
    DoSomething()
}

type MyStruct struct {}

func (m *MyStruct) DoSomething() {
    // Implementierung
}

// Überprüfung der Schnittstellenimplementierung
var _ MyInterface = (*MyStruct)(nil)

Auf diese Weise ist es in Go nicht notwendig, die Implementierung einer Schnittstelle explizit anzugeben — es reicht, alle ihre Methoden zu implementieren.