Sobes.tech
Junior — Middle

Est-il possible de mettre en œuvre un mécanisme d'héritage dans le langage Go?

sobes.tech IA

Réponse de l'IA

Dans le langage Go, il n'existe pas d'héritage classique comme dans les langages orientés objet tels que Java ou C++. À la place, Go utilise la composition et l'inclusion (embedding) de structures pour la réutilisation du code et l'extension des fonctionnalités.

Par exemple, on peut intégrer une structure dans une autre, et les méthodes de la structure intégrée seront accessibles via la structure externe :

package main
import "fmt"

type Animal struct {
    Name string
}

func (a Animal) Speak() {
    fmt.Println(a.Name, "parle")
}

type Dog struct {
    Animal // inclusion de la structure Animal
}

func main() {
    d := Dog{Animal{Name: "Bobic"}}
    d.Speak() // appellera la méthode Speak de la structure Animal
}

Ainsi, en Go, on obtient un comportement proche de l'héritage, mais il est réalisé via la composition, ce qui favorise une conception plus flexible et simple.