Maison > développement back-end > Golang > Comment obtenir le « reflect.Type » d'une interface dans Go ?

Comment obtenir le « reflect.Type » d'une interface dans Go ?

Patricia Arquette
Libérer: 2024-12-29 17:38:11
original
197 Les gens l'ont consulté

How Do I Get the `reflect.Type` of an Interface in Go?

Obtention du reflet.Type d'une interface

Lorsque vous travaillez avec des interfaces dans le package Reflect, il est nécessaire d'obtenir un objet Reflect.Type pour déterminer si un type donné implémente l'interface. Cet article explique comment récupérer le reflet.Type d'une interface.

Déterminer si un type implémente une interface

La méthode reflex.Type.Implements() prend un Reflect.Type objet et renvoie un booléen indiquant si le type implémente l'interface spécifiée. Cependant, l'obtention du Reflect.Type d'un type d'interface non initialisé peut poser des problèmes, car l'accès à la méthode Kind() sur un tel type entraînera une panique.

Solution : Obtenir le Reflect.Type d'une interface

Pour obtenir le reflet.Type d'une interface, utilisez les approches suivantes :

Méthode 1 :

var err error
t := reflect.TypeOf(&err).Elem()
Copier après la connexion

Cette méthode déréférence le pointeur &err pour obtenir le type d'erreur réel, puis utilise la méthode Elem() pour récupérer le reflet.Type de l'interface sous-jacente.

Méthode 2 (One-liner) :

t := reflect.TypeOf((*error)(nil)).Elem()
Copier après la connexion

Cette one-liner obtient le même résultat que la méthode 1 en créant directement un pointeur nul vers l'interface puis en utilisant Elem() pour extraire le reflet.Type de l'interface.

Avec l'une ou l'autre méthode, vous pouvez maintenant utiliser le reflet obtenu. Tapez un objet pour vérifier si un type implémente l'interface à l'aide de Reflect.Type.Implements().

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