Sobes.tech
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.