Middle
Jak zkontrolovat shodu struktury s rozhraním v Go?
sobes.tech AI
Odpověď od AI
V jazyce Go je shoda struktury s rozhraním implicitně kontrolována během kompilace. Pokud struktura implementuje všechny metody požadované rozhraním, je automaticky považována za kompatibilní s tímto rozhraním. Není třeba výslovně uvádět shodu.
Následující způsoby lze použít k ověření shody během kompilace:
- Přiřazení struktury proměnné typu rozhraní.
- Předání struktury funkci, která očekává argument typu rozhraní.
Příklad s přiřazením:
// Definice rozhraní
type MyInterface interface {
DoSomething()
GetValue() int
}
// Definice struktury, která má splnit rozhraní
type MyStruct struct {
value int
}
// Metody struktury, které implementují MyInterface
func (s MyStruct) DoSomething() {
// nějaká logika
}
func (s MyStruct) GetValue() int {
return s.value
}
// Kontrola shody během kompilace:
// Přiřadíme instanci struktury proměnné typu rozhraní.
// Pokud MyStruct neimplementuje MyInterface, kompilátor vypíše chybu.
var _ MyInterface = MyStruct{}
Příklad s předáním do funkce:
// Funkce přijímající argument typu rozhraní MyInterface
func Process(item MyInterface) {
item.DoSomething()
_ = item.GetValue() // použití hodnoty
}
// Na jiném místě kódu:
// Vytvoříme instanci MyStruct
myInstance := MyStruct{value: 42}
// Předáme instanci struktury funkci, která očekává rozhraní.
// Pokud MyStruct neimplementuje MyInterface, kompilátor vypíše chybu.
Process(myInstance)
Tyto přístupy zajišťují, že struktura splňuje definované rozhraní ještě před spuštěním programu, což je důležitý aspekt bezpečnosti typů v jazyce Go.