Obtention du type "réel" de valeurs d'interface dans Go
Le type d'interface de Go{} est un moyen polyvalent de gérer des valeurs de tout type . Cependant, déterminer le type réel d’une valeur d’interface{} peut être délicat. Voici quelques approches :
Assertions de type :
Les assertions de type, comme le démontre l'exemple fourni, sont la méthode la plus simple. En utilisant le . (point), vous pouvez tenter de convertir la valeur de l'interface en un type spécifique. Par exemple, si tmp, ok := w.(int) tente de convertir w en int et, en cas de succès, stocke la valeur dans tmp tout en définissant ok sur true.
Type Switches :
Les commutateurs de type offrent un moyen plus complet de gérer plusieurs types. Semblables aux instructions switch-case, les commutateurs de type peuvent vérifier le type d'une valeur d'interface {} et exécuter différents chemins de code en fonction du type. Par exemple, l'extrait de code suivant teste si myInterface est un int, float64 ou une chaîne :
switch v := myInterface.(type) { case int: fmt.Printf("Integer: %v", v) case float64: fmt.Printf("Float64: %v", v) case string: fmt.Printf("String: %v", v) default: fmt.Printf("Unknown type") }
Obtention de la représentation sous forme de chaîne d'un type :
Pour obtenir la représentation sous forme de chaîne d'un type, utilisez le package Reflect. Appelez Reflect.TypeOf(value).Name() sur la valeur de l'interface pour obtenir son nom de type sous forme de chaîne.
typeName := reflect.TypeOf(w).Name()
Conversion de valeurs à l'aide de la représentation de type :
Actuellement, il n'existe aucun moyen direct de convertir une valeur à l'aide de sa représentation de type chaîne. Cependant, des bibliothèques externes, telles que github.com/bluele/gcache, peuvent vous aider dans cette tâche en fournissant des fonctions pour convertir les chaînes en types.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!