Maison >développement back-end >Golang >Comment récupérer le nom d'une fonction à l'aide de Reflection in Go ?
Récupérer le nom de la fonction avec réflexion
Dans Go, la réflexion fournit le mécanisme permettant d'inspecter et de manipuler les structures du programme au moment de l'exécution. L'accès au nom d'une fonction est l'un de ces cas d'utilisation. Cependant, tenter d'obtenir le nom directement à partir de son type peut entraîner une chaîne vide.
Comportement attendu
Récupération du nom d'une fonction à l'aide de reflex.TypeOf(function). Name() renvoie une chaîne vide car elle pointe vers le type lui-même, qui ne contient pas le nom de la fonction.
Solution
Pour récupérer le nom de la fonction, nous besoin d'utiliser runtime.FuncForPC. Cette fonction prend le pointeur vers la valeur réfléchie de la fonction et renvoie un pointeur vers une structure *Func. L'appel de la méthode Name sur ce *Func donne le nom de fonction attendu comme :
name := runtime.FuncForPC(reflect.ValueOf(function).Pointer()).Name()
Cette approche renvoie à la fois le nom du package et de la fonction, par exemple. "paquet.fonction". Si vous le souhaitez, le nom du package peut être extrait en tokenisant la chaîne.
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!