Junior — Middle
Puteți explica principiul de moștenire și cum este implementat în limbajul Go?
sobes.tech AI
Răspuns de la AI
În limbajul Go, nu există moștenire clasică ca în alte limbaje orientate pe obiecte. În schimb, Go folosește compoziție și embedding pentru reutilizarea codului și extinderea funcționalităților.
Embedding-ul permite includerea unui tip (structură) într-altul, iar metodele tipului încorporat devin accesibile pentru tipul extern, ceea ce seamănă cu moștenirea.
Exemplu:
type Animal struct {
Name string
}
func (a Animal) Speak() string {
return "..."
}
// Încorporăm Animal în Dog
type Dog struct {
Animal
}
func (d Dog) Speak() string {
return "Ham!"
}
func main() {
dog := Dog{Animal{Name: "Buddy"}}
fmt.Println(dog.Name) // Acces la câmpul Animal
fmt.Println(dog.Speak()) // Metodă suprascrisă
}
Astfel, Go obține un efect similar cu moștenirea prin compoziție și embedding, evitând complexitatea unei ierarhii clasice.