Récupération de Reflect.Type à partir d'un type ou de son nom dans Go
Cette question explore s'il est possible d'obtenir le reflet.Type d'un type personnalisé, tel que "t1" dans l'exemple donné, sans l'instancier ni utiliser son nom comme chaîne.
Concernant le premier une partie de la question, oui, il est possible d'y parvenir en utilisant un nil tapé. L'extrait de code suivant illustre cette approche :
var v1 reflect.Type = reflect.TypeOf((*t1)(nil)).Elem()
Dans cet exemple, nous exploitons un pointeur nul typé pour obtenir le type d'exécution de "t1".
Quant à la deuxième partie, récupérer le reflet.Type directement à partir du nom d’un type n’est pas pris en charge dans Go. Le moteur d'exécution ne maintient pas une carte de tous les types dans le binaire actuel, ce qui serait nécessaire pour y parvenir.
Bien qu'il soit concevable de créer un package de registre de types et d'enregistrer les types pour une recherche par chaîne, cela entraînerait inévitablement être incomplet. De plus, les types anonymes introduisent des complications car leurs noms peuvent ne pas être uniques.
Bien que Go puisse théoriquement offrir une fonction permettant de récupérer un type en fonction de son nom, il est peu probable que cette fonctionnalité soit implémentée dans un avenir proche.
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!