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

Comment récupérer le « reflect.Type » d'une interface dans Go ?

DDD
Libérer: 2024-12-24 04:45:10
original
667 Les gens l'ont consulté

How to Retrieve the `reflect.Type` of an Interface in Go?

Récupérer le Reflect.Type d'une interface

Déterminer si un type implémente une interface via le package Reflect implique de transmettre un Reflect.Type à Reflect.Type.Implements(). Cet article explore le processus d'obtention de tels types.

Obtention du type d'une interface non initialisée

Tentative de récupération du type d'une interface d'erreur non initialisée (qui est une interface type) l'utilisation directe de reflex.TypeOf() entraînera une panique lors de la tentative d'accès à la méthode Kind() du type obtenu. Pour contourner ce problème, les approches suivantes peuvent être utilisées :

Approche 1 :

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

Cette approche consiste à obtenir le type d'un pointeur vers l'interface, et puis récupérer le type concret sous-jacent (élément) à l'aide d'Elem().

Approche 2 (One-Liner) :

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

Cette approche exploite le fait qu'une valeur d'interface nulle peut être affirmée sur n'importe quel type d'interface. En créant un pointeur nul vers le type d'interface souhaité et en récupérant son type, vous pouvez directement obtenir le type concret sans avoir à prendre l'adresse de la variable.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal