Middle
Jak można używać wbudowanych struktur w Go do naśladowania dziedziczenia? Co to daje i do czego służy?
sobes.tech AI
Odpowiedź od AI
W Go nie ma klasycznego dziedziczenia jak w językach obiektowych, ale wbudowane struktury (embedding) pozwalają je naśladować.
Gdy jedna struktura zawiera inną jako pole bez nazwy, metody wbudowanej struktury stają się dostępne dla struktury zewnętrznej, co przypomina dziedziczenie.
Daje to:
- Ponowne użycie kodu
- Kompozycję zamiast dziedziczenia
- Możliwość rozszerzania zachowania wbudowanej struktury
Przykład:
type Animal struct {
Name string
}
func (a Animal) Speak() string {
return "..."
}
// Embedding Animal w Dog
type Dog struct {
Animal
}
func (d Dog) Speak() string {
return "Woof!"
}
func main() {
d := Dog{Animal{Name: "Buddy"}}
fmt.Println(d.Name) // dostęp do pola Animal
fmt.Println(d.Speak()) // wywołanie nadpisanej metody
}
Używa się do tworzenia bardziej złożonych typów na podstawie prostych, bez sztywnej hierarchii klas.