Middle
Cum se pot folosi structurile încorporate în Go pentru a imita moștenirea? Ce aduce și pentru ce se folosește?
sobes.tech AI
Răspuns de la AI
În Go nu există moștenire clasică ca în limbajele orientate pe obiect, dar structurile încorporate (embedding) permit imitarea acesteia.
Când o structură include alta ca un câmp fără nume, metodele structurii încorporate devin accesibile pentru structura externă, ceea ce seamănă cu moștenirea.
Aceasta oferă:
- Reutilizarea codului
- Compoziție în loc de moștenire
- Posibilitatea de a extinde comportamentul structurii încorporate
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 "Woof!"
}
func main() {
d := Dog{Animal{Name: "Buddy"}}
fmt.Println(d.Name) // acces la câmpul Animal
fmt.Println(d.Speak()) // apelarea metodei suprascrise
}
Este folosit pentru a crea tipuri mai complexe bazate pe tipuri simple, fără o ierarhie rigidă de clase.