Maison >développement back-end >Golang >Comment récupérer le « reflect.Type » d'une interface dans 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()
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()
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!