Sobes.tech
Junior

Quel est le rôle de l'interface vide dans le langage Go?

sobes.tech IA

Réponse de l'IA

L'interface vide interface{} en Go peut contenir des valeurs de n'importe quel type. Cela la rend utile pour les scénarios suivants :

  • Fonctions travaillant avec des types de données inconnus au moment de la compilation. Par exemple, la bibliothèque standard fmt.Println accepte des arguments de type interface{}.
  • Stockage de types de données mixtes dans des collections. La tranche []interface{} peut contenir des éléments de différents types.
  • Implémentation du polymorphisme lorsque les types spécifiques ne sont pas connus à l'avance.

Cependant, l'utilisation de l'interface vide nécessite d'effectuer une assertion de type (type assertion) ou un switch de type (type switch) à l'exécution pour accéder à la valeur réelle et à ses méthodes, ce qui peut être moins sûr en termes de types et moins performant par rapport à l'utilisation de types spécifiques ou d'interfaces plus spécialisées.

// Exemple d'utilisation de l'interface vide
var data interface{}
data = 10         // data stocke maintenant un int
data = "hello"    // data stocke maintenant une string
data = true       // data stocke maintenant un bool

// Assertion de type pour accéder à la valeur
if value, ok := data.(string); ok {
	// value est une string
	_ = value
}

// Switch de types
switch v := data.(type) {
case int:
	// v est un int
	_ = v
case string:
	// v est une string
	_ = v
default:
	// Type inconnu
}