"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Pouvez-vous récupérer un « reflect.Type » dans Go sans instancier le type ni utiliser son nom comme chaîne ?

Pouvez-vous récupérer un « reflect.Type » dans Go sans instancier le type ni utiliser son nom comme chaîne ?

Publié le 2024-11-10
Parcourir:152

Can You Retrieve a `reflect.Type` in Go Without Instantiating the Type or Using its Name as a String?

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 la première partie de la question, oui, c'est 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 type typé pointeur nil pour obtenir le type d'exécution de "t1."

En ce qui concerne la deuxième partie, la récupération du reflet.Type directement à partir du nom d'un type n'est pas prise 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.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3