Maison >développement back-end >Golang >Comment puis-je déterminer de manière fiable l'implémentation de l'interface à l'aide de « reflect.Type » de Go ?
Détermination de l'implémentation d'une interface à l'aide de Reflect.Type
Dans la programmation orientée objet, il est crucial de vérifier si un type implémente une interface spécifique. Pour faire cela efficacement dans le package de réflexion de Go, une représentation reflet.Type de l'interface est requise. Cependant, obtenir ce type peut s'avérer difficile, en particulier lorsqu'il s'agit de types d'interface non initialisés tels qu'une erreur.
Considérez la tentative suivante, qui conduit à la panique :
var err error fmt.Printf("%#v\n", reflect.TypeOf(err).Kind())
Pour résoudre ce problème , la fonction reflect.TypeOf doit être appelée sur un pointeur vers la valeur de l'interface, et non sur la valeur elle-même. De plus, la méthode Elem() peut être utilisée pour obtenir le type sous-jacent du pointeur, qui représente le type d'interface :
var err error t := reflect.TypeOf(&err).Elem()
Alternativement, une solution sur une seule ligne peut être obtenue en utilisant l'assertion de type :
t := reflect.TypeOf((*error)(nil)).Elem()
Maintenant, le reflet.Type obtenu peut être transmis à réflexion.Type.Implements() pour déterminer s'il implémente l'interface souhaitée.
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!