Maison > développement back-end > Golang > Comment obtenir le reflet.Type d'une interface non initialisée dans Go ?

Comment obtenir le reflet.Type d'une interface non initialisée dans Go ?

Mary-Kate Olsen
Libérer: 2024-12-19 11:09:14
original
281 Les gens l'ont consulté

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

Détermination du Reflect.Type d'une interface

Pour vérifier si un type implémente une interface à l'aide du package Reflect, il est nécessaire de fournir un réflexion.Type à refléter.Type.Implements(). Cependant, obtenir ce type peut parfois paraître énigmatique, notamment pour les interfaces non initialisées comme error.

Interface d'erreur non initialisée

Tenter de déterminer le type d'une erreur non initialisée (interface ) l'utilisation de reflex.TypeOf(err).Kind() entraînera une panique lorsque Kind() est invoquée.

Solution

Pour obtenir correctement le type d'une interface comme error, il faut d'abord créer un pointeur vers l'interface puis utiliser Elem() sur le type résultant. Cela peut être accompli de deux manières :

Méthode détaillée :

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

Méthode sur une ligne :

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

En suivant ces approches, vous pouvez récupérer efficacement le reflet.Type d'une interface, quel que soit son état d'initialisation.

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