Lorsque vous travaillez avec des types personnalisés dans Go, il peut être utile d'obtenir leur représentation sous forme de chaîne pour des opérations dynamiques ou pour faciliter la refactorisation du code. Bien que l'utilisation de fmt.Sprintf("%T", ID{}) soit une approche simple, elle implique d'instancier le type, ce qui peut être indésirable.
Envisagez plutôt d'utiliser le réfléchissez au package pour y parvenir. En utilisant la fonction reflex.TypeOf et en travaillant avec le pointeur vers le type, vous pouvez obtenir le type de base ou le type d'élément du type à l'aide de Type.Elem(). Par exemple :
t := reflect.TypeOf((*ID)(nil)).Elem() name := t.Name() fmt.Println(name)
Cette approche évite le besoin d'instanciation et peut également être appliquée aux interfaces. En commençant par le pointeur vers le type, vous pouvez accéder à son type concret sous-jacent.
L'exécution de l'exemple de code fourni produira la représentation sous forme de chaîne du type d'ID :
ID
Il est important de noter que Type.Name() peut renvoyer une chaîne vide si le type n'est pas nommé. Cela se produit généralement dans les cas où un type est défini sans nom, par exemple lors de l'utilisation de structures anonymes ou de résultats de fonction.
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!