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:
- Pokúsiť sa priradiť inštanciu štruktúry premennej typu rozhranie — ak kompilácia prebehne úspešne, znamená to, že štruktúra implementuje rozhranie.
- 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.