Junior — Middle
Môžete vysvetliť princíp dedičnosti a ako je implementovaný v jazyku Go?
sobes.tech AI
Odpoveď od AI
V jazyku Go neexistuje klasické dědičnosti jako v jiných objektově orientovaných jazycích. Místo toho Go používá kompozici a embedding pro opakované použití kódu a rozšíření funkcionality.
Embedding umožňuje začlenit jeden typ (strukturu) do jiného a metody vloženého typu jsou dostupné pro vnější typ, což připomíná dědičnost.
Příklad:
type Animal struct {
Name string
}
func (a Animal) Speak() string {
return "..."
}
// Vložíme Animal do Dog
type Dog struct {
Animal
}
func (d Dog) Speak() string {
return "Haf!"
}
func main() {
dog := Dog{Animal{Name: "Buddy"}}
fmt.Println(dog.Name) // Přístup k poli Animal
fmt.Println(dog.Speak()) // Přepsaná metoda
}
Tímto způsobem Go dosahuje efektu podobného dědičnosti pomocí kompozice a embeddingu, čímž se vyhýbá složitostem klasické hierarchie.