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