Aller au contenu principal
Publié le

Les interfaces en Go

Partager :

Introduction

Les interfaces en Go sont des outils puissants pour créer du code organisé et flexible. Comprendre les interfaces est essentiel pour tirer le meilleur parti des capacités uniques du langage.

Concepts Fondamentaux

Que sont les Interfaces ?

Une interface en Go définit un ensemble de méthodes, mais, contrairement aux classes dans d'autres langages, elle ne les implémente pas — c'est une abstraction pure.

type Vehicule interface {
  Bouger()
}

Tout type possédant une méthode Bouger est considéré comme un Vehicule.

Implémenter des Interfaces

En Go, l'implémentation des interfaces est implicite. Si un type possède toutes les méthodes d'une interface, il satisfait cette interface.

type Voiture struct {}

func (v Voiture) Bouger() {
  fmt.Println("Voiture en mouvement")
}

Ici, Voiture implémente automatiquement l'interface Vehicule.

Interfaces Vides et leur Utilisation

L'interface vide (interface{}) est un cas particulier qui peut représenter n'importe quel type. Elle est largement utilisée pour créer des fonctions génériques.

func DecrireValeur(v interface{}) {
  fmt.Printf("Valeur : %v, Type : %T\n", v, v)
}

Composition d'Interfaces

Les interfaces peuvent être composées pour créer des abstractions plus complexes, permettant une organisation plus propre du code.

type Motorise interface {
  Vehicule
  DemarrerMoteur()
}

Un type Motorise doit implémenter à la fois les méthodes de Vehicule et DemarrerMoteur.

Utilisations Avancées

Les Interfaces comme Contrats

Les interfaces fonctionnent comme des contrats en Go, spécifiant ce qu'un type doit faire, mais pas comment le faire. Cela favorise la séparation des responsabilités et une conception flexible.

Le Polymorphisme en Action

Les interfaces sont la clé du polymorphisme en Go. Elles permettent aux fonctions d'accepter et d'interagir avec tout type satisfaisant l'interface, ce qui augmente la réutilisation du code.

func Accelerer(v Vehicule) {
  v.Bouger()
}

La fonction Accelerer peut fonctionner avec n'importe quel Vehicule.

Interfaces et Tests

Les interfaces sont extrêmement utiles pour écrire des tests en Go. Avec les interfaces, on peut créer des objets mock pour simuler le comportement de types réels.

Conclusion

Les interfaces sont fondamentales pour créer du code Go robuste, flexible et facile à maintenir. Elles permettent aux développeurs de construire des systèmes complexes avec des composants facilement interchangeables et testables.

Happy coding!