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