Sobes.tech
Junior — Middle

Pouvez-vous expliquer le principe d'héritage et comment il est implémenté dans le langage Go?

sobes.tech IA

Réponse de l'IA

Dans le langage Go, il n’y a pas d’héritage classique comme dans d’autres langages orientés objet. À la place, Go utilise la composition et l’embedding pour la réutilisation du code et l’extension des fonctionnalités.

L’embedding permet d’inclure un type (structure) dans un autre, et les méthodes du type intégré deviennent accessibles pour le type externe, ce qui ressemble à de l’héritage.

Exemple :

type Animal struct {
    Name string
}

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

// Inclure Animal dans Dog

type Dog struct {
    Animal
}

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

func main() {
    dog := Dog{Animal{Name: "Buddy"}}
    fmt.Println(dog.Name)       // Accès au champ Animal
    fmt.Println(dog.Speak())    // Méthode redéfinie
}

Ainsi, Go atteint un effet similaire à l’héritage via la composition et l’inclusion, évitant les complexités d’une hiérarchie classique.