Maison  >  Article  >  développement back-end  >  Comment puis-je obtenir les informations de type d’une variable dans Go sans créer d’instance ?

Comment puis-je obtenir les informations de type d’une variable dans Go sans créer d’instance ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-01 05:34:02759parcourir

How can I get the type information of a variable in Go without creating an instance?

TypeOf sans instance et passer le résultat à une fonction

En Go, il est possible d'obtenir les informations de type d'une variable sans créer d'instance de ce type . Cela peut être fait en utilisant la fonction réflexion.TypeOf.

Utilisation de TypeOf sans instance

La fonction réflexion.TypeOf prend un pointeur vers un type comme argument et renvoie une valeur réflexion.Type. Le pointeur vers le type peut être obtenu à l'aide de l'opérateur * suivi du nom du type. Par exemple :

<code class="go">t := reflect.TypeOf((*int)(nil))</code>

Cette ligne de code crée un pointeur vers le type int et l'assigne à la variable t.

Obtenir le type de base

Si vous avez un pointeur vers un type qui est un pointeur vers un autre type, vous pouvez utiliser la méthode Elem de la valeur Reflect.Type pour obtenir le type de base. Par exemple :

<code class="go">t = reflect.TypeOf((*http.Request)(nil)).Elem()</code>

Cette ligne de code crée un pointeur vers le type http.Request et l'affecte à la variable t. La méthode Elem est ensuite appelée sur la valeur Reflect.Type pour obtenir le type de base, qui est http.Request.

Utilisation du résultat dans une fonction

Une fois que vous avez une valeur Reflect.Type , vous pouvez le passer en argument à une fonction. Par exemple, la fonction suivante prend une valeur Reflect.Type comme argument et imprime le nom du type :

<code class="go">func printType(t reflect.Type) {
    fmt.Println(t.Name())
}</code>

Cette fonction peut être utilisée comme suit :

<code class="go">t := reflect.TypeOf((*int)(nil))
printType(t)</code>

Cette fonction Une ligne de code imprimera la chaîne "int".

Création de constantes pour les types

Dans certains cas, il peut être plus efficace de créer des constantes pour les types au lieu d'utiliser Reflect.TypeOf. Par exemple, le code suivant crée une constante pour le type int :

<code class="go">const TypeInt = reflect.TypeOf((*int)(nil))</code>

Cette constante peut ensuite être utilisée à la place de l'expression Reflect.TypeOf :

<code class="go">printType(TypeInt)</code>

Ce code va imprime la chaîne "int".

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!

Déclaration:
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