Maison >développement back-end >Golang >Comment accéder au « reflect.Type » d'une structure en Go sans instanciation ?
Obtention du type Struct sans instanciation
Dans un projet visant à charger dynamiquement des solutions aux problèmes du projet Euler, obtention de l'instance Reflect.Type d'un struct sans le créer physiquement pose un défi. La solution actuelle nécessite une instanciation manuelle et une remise à zéro des structures, comme l'illustre la structure de registre dans l'extrait de code Go fourni.
Une façon de surmonter cette limitation consiste à tirer parti de l'idiome du pointeur nul. En créant un pointeur nul vers la structure souhaitée, nous pouvons obtenir son instance Reflect.Type sans allouer de mémoire pour l'ensemble de sa structure. La méthode Elem du package Reflect nous permet alors d'accéder au type d'élément, qui dans ce cas correspond au type de structure réel.
Par exemple, considérons la modification suivante de l'extrait de code :
<code class="go">import "reflect" ... func main() { // Get the type of DummySolution without instantiation dummySolutionType := reflect.TypeOf((*DummySolution)(nil)).Elem() fmt.Println("DummySolution type:", dummySolutionType) }</code>
Dans ce code modifié, nous créons un pointeur nil vers DummySolution puis utilisons reflect.TypeOf pour obtenir son instance reflect.Type. Par la suite, nous utilisons Elem pour obtenir le type d’élément, qui est le type réel de la structure DummySolution. En utilisant cette technique, nous pouvons accéder au type struct sans réellement en créer une instance, résolvant ainsi le défi d'origine.
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!