Middle
Ako možno použiť zabudované štruktúry v Go na napodobenie dedičstva? Čo to prináša a na čo sa používa?
sobes.tech AI
Odpoveď od AI
V jazyku Go neexistuje klasické dedičstvo ako v objektovo orientovaných jazykoch, ale zabudované štruktúry (embedding) umožňujú jeho napodobenie.
Keď jedna štruktúra obsahuje inú ako bezmenné pole, metódy zabudovanej štruktúry sa stávajú dostupnými pre vonkajšiu štruktúru, čo je podobné dedičstvu.
Toto poskytuje:
- Opakované použitie kódu
- Kompozíciu namiesto dedičstva
- Možnosť rozšíriť správanie zabudovanej štruktúry
Príklad:
type Animal struct {
Name string
}
func (a Animal) Speak() string {
return "..."
}
// Zabudovávame 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) // prístup k poľu Animal
fmt.Println(d.Speak()) // volanie prepísanej metódy
}
Používa sa na vytváranie zložitejších typov na základe jednoduchých, bez pevnej hierarchie tried.