Sobes.tech
Junior — Middle

Puoi spiegare il principio di ereditarietà e come viene implementato nel linguaggio Go?

sobes.tech AI

Risposta dell'AI

Nel linguaggio Go non esiste un'ereditarietà classica come in altri linguaggi orientati agli oggetti. Al suo posto, Go utilizza composizione e embedding per il riutilizzo del codice e l'estensione delle funzionalità.

L'embedding permette di includere un tipo (struttura) all'interno di un altro, e i metodi del tipo incorporato diventano accessibili dal tipo esterno, somigliando a un'ereditarietà.

Esempio:

type Animal struct {
    Name string
}

func (a Animal) Speak() string {
    return "..."
}

// Incorporiamo Animal in Dog

type Dog struct {
    Animal
}

func (d Dog) Speak() string {
    return "Bau!"
}

func main() {
    dog := Dog{Animal{Name: "Buddy"}}
    fmt.Println(dog.Name)       // Accesso al campo Animal
    fmt.Println(dog.Speak())    // Metodo sovrascritto
}

In questo modo, Go ottiene un effetto simile all'ereditarietà tramite composizione e embedding, evitando le complessità di una gerarchia classica.