Maison > développement back-end > Golang > Comment obtenir efficacement la représentation sous forme de chaîne d'un type Go ?

Comment obtenir efficacement la représentation sous forme de chaîne d'un type Go ?

Mary-Kate Olsen
Libérer: 2024-11-28 08:16:15
original
503 Les gens l'ont consulté

How to Efficiently Get the String Representation of a Go Type?

Récupération de la représentation sous forme de chaîne d'un type dans Go

Considérez la définition de type suivante :

type ID uuid.UUID
Copier après la connexion

Pour obtenir la représentation sous forme de chaîne du type par programme, une approche consiste à utiliser la fonction fmt.Sprintf("%T", ID{}). Cependant, cette méthode peut s'avérer inefficace et nécessite l'instanciation du type.

Une solution alternative réside dans le package Reflect. En obtenant une référence au pointeur du type, vous pouvez créer un pointeur « typé nul » sans allocation. Ce pointeur permet d'accéder au descripteur du type à l'aide de la méthode Type.Elem(), qui récupère le type de base ou d'élément du pointeur.

Par exemple :

t := reflect.TypeOf((*ID)(nil)).Elem()
name := t.Name()
fmt.Println(name)
Copier après la connexion

Cette approche fournit plusieurs avantages :

  • Il ne nécessite pas l'instanciation du type.
  • Il fonctionne à la fois avec les noms nommés et types sans nom.
  • Il est portable et ne repose pas sur des chaînes littérales.

Il est important de noter que Type.Name() peut renvoyer une chaîne vide pour les types sans nom. Si vous utilisez une déclaration de type avec le mot-clé type, vous obtiendrez un nom de type non vide.

En utilisant le package Reflect, vous pouvez obtenir la représentation sous forme de chaîne d'un type de manière flexible et efficace.

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