Middle
Jak lze v Go použít vestavěné struktury k napodobení dědičnosti? Co to přináší a k čemu se používá?
sobes.tech AI
Odpověď od AI
V jazyce Go neexistuje klasické dědičnosti jako v objektově orientovaných jazycích, ale vestavěné struktury (embedding) umožňují její napodobení.
Když jedna struktura obsahuje jinou jako bezjmenné pole, metody vestavěné struktury jsou dostupné pro vnější strukturu, což je podobné dědičnosti.
To přináší:
- Opakované použití kódu
- Složení místo dědičnosti
- Možnost rozšířit chování vestavěné struktury
Příklad:
type Animal struct {
Name string
}
func (a Animal) Speak() string {
return "..."
}
// Vkládáme Animal do Dog
type Dog struct {
Animal
}
func (d Dog) Speak() string {
return "Woof!"
}
func main() {
d := Dog{Animal{Name: "Buddy"}}
fmt.Println(d.Name) // přístup k poli Animal
fmt.Println(d.Speak()) // volání přepsané metody
}
Používá se k vytváření složitějších typů na základě jednoduchých, bez pevné hierarchie tříd.