Sobes.tech
Middle

Comment vérifier la conformité d'une structure à une interface en Go?

sobes.tech IA

Réponse de l'IA

En Go, la correspondance d'une structure avec une interface est vérifiée implicitement lors de la compilation. Si la structure implémente toutes les méthodes requises par l'interface, elle est automatiquement considérée comme conforme à cette interface. Il n'est pas nécessaire de spécifier explicitement la conformité.

Vous pouvez utiliser les méthodes suivantes pour vérifier la conformité lors de la compilation :

  1. Assigner la structure à une variable de type interface.
  2. Passer la structure à une fonction qui attend un argument de type interface.

Exemple avec assignation :

// Définir l'interface
type MyInterface interface {
	DoSomething()
	GetValue() int
}

// Définir la structure qui doit respecter l'interface
type MyStruct struct {
	value int
}

// Méthodes de la structure implémentant MyInterface
func (s MyStruct) DoSomething() {
	// une logique
}

func (s MyStruct) GetValue() int {
	return s.value
}

// Vérification de conformité lors de la compilation :
// Assigner une instance de la structure à une variable de type interface.
// Si MyStruct n'implémente pas MyInterface, le compilateur générera une erreur.
var _ MyInterface = MyStruct{}

Exemple avec passage à une fonction :

// Fonction acceptant un argument de type interface MyInterface
func Process(item MyInterface) {
	item.DoSomething()
	_ = item.GetValue() // utiliser la valeur
}

// Autre endroit du code :
// Créer une instance de MyStruct
myInstance := MyStruct{value: 42}

// Passer l'instance de la structure à une fonction qui attend l'interface.
// Si MyStruct n'implémente pas MyInterface, le compilateur générera une erreur.
Process(myInstance)

Ces approches garantissent que la structure respecte l'interface définie avant même l'exécution du programme, ce qui est un aspect important de la sécurité des types en Go.