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.
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.
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.
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".
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!