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
Mary-Kate Olsenoriginal
2024-12-19 11:09:14343parcourir

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()

Méthode sur une ligne :

t := reflect.TypeOf((*error)(nil)).Elem()

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!

Déclaration:
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