Junior — Middle
Czy możesz wyjaśnić zasadę dziedziczenia i jak jest ona realizowana w języku Go?
sobes.tech AI
Odpowiedź od AI
W języku Go nie ma klasycznego dziedziczenia, jak w innych językach obiektowych. Zamiast tego, Go używa kompozycji i wbudowania (embedding) do ponownego użycia kodu i rozszerzania funkcjonalności.
Wbudowanie pozwala na włączenie jednego typu (struktury) do innego, a metody wbudowanego typu stają się dostępne dla typu zewnętrznego, co przypomina dziedziczenie.
Przykład:
type Animal struct {
Name string
}
func (a Animal) Speak() string {
return "..."
}
// Wbudowujemy Animal w Dog
type Dog struct {
Animal
}
func (d Dog) Speak() string {
return "Hau!"
}
func main() {
dog := Dog{Animal{Name: "Buddy"}}
fmt.Println(dog.Name) // Dostęp do pola Animal
fmt.Println(dog.Speak()) // Nadpisana metoda
}
W ten sposób, Go osiąga efekt podobny do dziedziczenia poprzez kompozycję i wbudowanie, unikając złożoności klasycznej hierarchii.