Maison > développement back-end > Golang > le corps du texte

Comment accéder au « reflect.Type » d'une structure en Go sans instanciation ?

Mary-Kate Olsen
Libérer: 2024-10-25 09:51:28
original
941 Les gens l'ont consulté

How to Access the `reflect.Type` of a Struct in Go without Instantiation?

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!