Que peut être représenté par une interface vide en Go?
sobes.tech IA
Réponse de l'IA
En Go, l’interface vide interface{} peut représenter n’importe quelle valeur de n’importe quel type.
Cela est dû au fait que tout type implémente implicitement l’interface vide, car aucune méthode n’est requise.
Exemples de ce qui peut être représenté par une interface vide :
- Nombre entier :
int,int32,int64 - Nombre à virgule flottante :
float32,float64 - Chaîne :
string - Valeur booléenne :
bool - Tableaux et slices :
[]int,[]string,[3]int - Maps :
map[string]int,map[int]interface{} - Structures : tout type de structure défini par l’utilisateur
- Pointeurs :
*int,*MyStruct - Fonctions :
func(),func(string) int - Canaux :
chan int,chan interface{} - Nil (null) pour les types de référence :
nil
Cela rend l’interface vide utile lorsque vous devez stocker ou transmettre des valeurs de type inconnu lors de la compilation, par exemple lors de la manipulation de données non typées utilisées dans des bibliothèques de codage/décodage (JSON, XML) ou dans des frameworks pour travailler avec des bases de données.
Exemple d’utilisation dans une map :
// Map où les valeurs peuvent être de n’importe quel type
data := make(map[string]interface{})
data["age"] = 30
data["name"] = "Alice"
data["isStudent"] = true
data["hobbies"] = []string{"reading", "hiking"}
// Accès aux valeurs et vérification du type
age, ok := data["age"].(int)
if ok {
// Travailler avec int
}
name, ok := data["name"].(string)
if ok {
// Travailler avec string
}
Il est important de se rappeler qu’en travaillant avec des valeurs stockées en tant que interface{}, il est nécessaire d’effectuer une assertion de type (type assertion) ou un switch de type (type switch) pour accéder à la valeur sous-jacente et travailler avec elle dans son type réel.