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!