Middle
Hoe kunnen ingebedde structuren in Go worden gebruikt om erfelijkheid na te bootsen? Wat brengt het en waarvoor wordt het gebruikt?
sobes.tech AI
Antwoord van AI
In Go is er geen klassisch erfelijkheid zoals in objectgeoriënteerde talen, maar ingebedde structuren (embedding) maken het mogelijk om dit na te bootsen.
Wanneer een structuur een andere als een naamloze veld opneemt, worden de methoden van de ingebedde structuur toegankelijk voor de externe structuur, wat lijkt op erfelijkheid.
Dit biedt:
- Hergebruik van code
- Samenstelling in plaats van erfelijkheid
- De mogelijkheid om het gedrag van de ingebedde structuur uit te breiden
Voorbeeld:
type Animal struct {
Name string
}
func (a Animal) Speak() string {
return "..."
}
// Embedding van Animal in Dog
type Dog struct {
Animal
}
func (d Dog) Speak() string {
return "Woof!"
}
func main() {
d := Dog{Animal{Name: "Buddy"}}
fmt.Println(d.Name) // toegang tot het Animal-veld
fmt.Println(d.Speak()) // aanroepen van de overschreven methode
}
Gebruikt om complexere types te maken op basis van eenvoudige types, zonder een strikte klassehiërarchie.