Sobes.tech
Junior — Middle

Comment peut-on déterminer si une structure donnée implémente une interface donnée?

sobes.tech IA

Réponse de l'IA

En Go, l'implémentation d'une interface est vérifiée implicitement : si un type contient toutes les méthodes déclarées dans l'interface, il implémente automatiquement cette interface.

Pour déterminer si une structure implémente une interface donnée, on peut :

  1. Essayer d'assigner une instance de la structure à une variable de type interface — si la compilation réussit, cela signifie que la structure implémente l'interface.
  2. Utiliser une vérification statique avec _var _ :
var _ MyInterface = (*MyStruct)(nil)

Si ce code compile sans erreur, cela signifie que MyStruct implémente l'interface MyInterface.

Exemple :

type MyInterface interface {
    DoSomething()
}

type MyStruct struct {}

func (m *MyStruct) DoSomething() {
    // implémentation
}

// Vérification de l'implémentation de l'interface
var _ MyInterface = (*MyStruct)(nil)

Ainsi, en Go, il n'est pas nécessaire de déclarer explicitement l'implémentation d'une interface — il suffit d'implémenter toutes ses méthodes.