Sobes.tech
Junior — Middle

Ako určiť, či určitá štruktúra implementuje dané rozhranie?

sobes.tech AI

Odpoveď od AI

V jazyku Go je implementácia rozhrania kontrolovaná nepriame: ak typ obsahuje všetky metódy deklarované v rozhraní, automaticky ho implementuje.

Ak chcete zistiť, či štruktúra implementuje dané rozhranie, môžete:

  1. Pokúsiť sa priradiť inštanciu štruktúry premennej typu rozhranie — ak kompilácia prebehne úspešne, znamená to, že štruktúra implementuje rozhranie.
  2. Použiť statickú kontrolu pomocou _var _:
var _ MyInterface = (*MyStruct)(nil)

Ak sa tento kód skompiluje bez chýb, znamená to, že MyStruct implementuje rozhranie MyInterface.

Príklad:

type MyInterface interface {
    DoSomething()
}

type MyStruct struct {}

func (m *MyStruct) DoSomething() {
    // implementácia
}

// Kontrola implementácie rozhrania
var _ MyInterface = (*MyStruct)(nil)

Týmto spôsobom v jazyku Go nie je potrebné explicitne uvádzať implementáciu rozhrania — stačí implementovať všetky jeho metódy.