Sobes.tech
Middle

Comment peut-on utiliser les structures intégrées en Go pour imiter l'héritage ? Qu'est-ce que cela apporte et à quoi cela sert-il ?

sobes.tech IA

Réponse de l'IA

En Go, il n’y a pas d’héritage classique comme dans les langages orientés objet, mais les structures intégrées (embedding) permettent de l’imiter.

Lorsqu’une structure inclut une autre comme un champ sans nom, les méthodes de la structure intégrée deviennent accessibles pour la structure externe, ce qui ressemble à de l’héritage.

Cela offre :

  • Réutilisation du code
  • Composition plutôt que l’héritage
  • La possibilité d’étendre le comportement de la structure intégrée

Exemple :

type Animal struct {
    Name string
}

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

// Embedding d’Animal dans Dog
type Dog struct {
    Animal
}

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

func main() {
    d := Dog{Animal{Name: "Buddy"}}
    fmt.Println(d.Name)      // accès au champ Animal
    fmt.Println(d.Speak())   // appel de la méthode redéfinie
}

Utilisé pour créer des types plus complexes à partir de types simples, sans hiérarchie rigide de classes.