Middle
Kuidas saab Go-s kasutada sisseehitatud struktuure päriluse imiteerimiseks? Mida see annab ja milleks seda kasutatakse?
sobes.tech AI
Vastus AI-lt
Go keeles ei ole klassikalist pärandamist nagu objektorienteeritud keeltes, kuid sisseehitatud struktuurid (embedding) võimaldavad seda jäljendada.
Kui üks struktuur sisaldab teist nimeta vaba väljana, muutuvad sisseehitatud struktuuri meetodid välise struktuuri jaoks kättesaadavaks, mis sarnaneb pärandamisega.
See võimaldab:
- Koodi taaskasutust
- Koostist pärandamise asemel
- Võimalust laiendada sisseehitatud struktuuri käitumist
Näide:
type Animal struct {
Name string
}
func (a Animal) Speak() string {
return "..."
}
// Sisseehitatud Animal Dog-ile
type Dog struct {
Animal
}
func (d Dog) Speak() string {
return "Woof!"
}
func main() {
d := Dog{Animal{Name: "Buddy"}}
fmt.Println(d.Name) // juurdepääs Animal väljadele
fmt.Println(d.Speak()) // ülekirjutatud meetodi väljakutse
}
Kasutatakse keerulisemate tüüpide loomiseks lihtsatest tüüpidest, ilma rangete klassihierarhiateta.