Sobes.tech
Junior — Middle

Comment la structure orientée objet est-elle implémentée dans le langage Go et en quoi diffère-t-elle de la structure classique?

sobes.tech IA

Réponse de l'IA

En Go, la programmation orientée objet est réalisée par composition et interfaces, plutôt que par classes et héritage, comme dans la programmation orientée objet classique.

Les principales différences :

  • Absence de classes : En Go, il n’y a pas de classes, à la place, on utilise des structures (struct) qui contiennent des champs et des méthodes.
  • Composition plutôt que héritage : Au lieu d’hériter de structures, on peut inclure une structure dans une autre, ce qui permet de réutiliser du code.
  • Interfaces : Les interfaces en Go définissent un ensemble de méthodes qu’une structure doit implémenter. Les types implémentent automatiquement l’interface s’ils ont les méthodes nécessaires, sans déclaration explicite.

Exemple :

package main
import "fmt"

type Animal interface {
    Speak() string
}

type Dog struct {}

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

type Cat struct {}

func (c Cat) Speak() string {
    return "Meow!"
}

func main() {
    animals := []Animal{Dog{}, Cat{}}
    for _, a := range animals {
        fmt.Println(a.Speak())
    }
}

Ainsi, Go propose un modèle d’orienté objet plus simple et flexible, basé sur les interfaces et la composition, sans les complexités de l’héritage classique.