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.