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.