Sobes.tech
Junior — Middle

Jak lze určit, zda určitá struktura implementuje dané rozhraní?

sobes.tech AI

Odpověď od AI

V jazyce Go je implementace rozhraní implicitní: pokud typ obsahuje všechny metody deklarované v rozhraní, automaticky ho implementuje.

Chcete-li zjistit, zda struktura implementuje dané rozhraní, můžete:

  1. Pokusit se přiřadit instanci struktury proměnné typu rozhraní — pokud kompilace proběhne úspěšně, znamená to, že struktura rozhraní implementuje.
  2. Použít statickou kontrolu pomocí _var _:
var _ MyInterface = (*MyStruct)(nil)

Pokud se tento kód zkompiluje bez chyb, znamená to, že MyStruct implementuje rozhraní MyInterface.

Příklad:

type MyInterface interface {
    DoSomething()
}

type MyStruct struct {}

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

// Kontrola implementace rozhraní
var _ MyInterface = (*MyStruct)(nil)

Tímto způsobem v jazyce Go není nutné explicitně uvádět implementaci rozhraní — stačí implementovat všechny jeho metody.