Obtenir une représentation de type à partir du nom dans Go avec réflexion
Question :
Comment peut-on obtenir une représentation Type à partir de son nom en utilisant la réflexion de Go bibliothèques ?
Réponse :
La compréhension de cette question dépend de son interprétation. Il existe essentiellement deux perspectives :
Inaccessibilité à l'exécution :
Si le nom du type est fourni sous forme de chaîne au moment de l'exécution, il ne peut pas être converti en représentation de type. Les types qui ne sont pas explicitement référencés peuvent ne pas être inclus dans le binaire exécutable final, ce qui les rend inaccessibles au moment de l'exécution.
Accessibilité temporelle du « codage » :
Cependant, pendant codage (création ou génération de code source), il est possible d'y parvenir sans créer de variable du type spécifié et sans appeler Reflect.TypeOf().
Obtention du type intégré :
On peut utiliser une valeur de pointeur nulle typée et parcourir à partir du descripteur Reflect.Type du pointeur vers le type de base ou d'élément du pointeur en utilisant Type.Elem().
Exemple :
t := reflect.TypeOf((*YourType)(nil)).Elem()
Cette approche donne un descripteur de Type (t) identique au descripteur (t2) obtenu en créant une variable du type et utilisant Reflect.TypeOf() :
var x YourType t2 := reflect.TypeOf(x) fmt.Println(t, t2) fmt.Println(t == t2)
Sortie :
main.YourType main.YourType true
Conclusion :
Lors de la récupération du type la représentation n'est pas réalisable au moment de l'exécution en raison de contraintes de compilation, elle est possible pendant le temps de codage en accédant au type intégré à l'aide du pointeur nil typé approche.
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!