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 Reflect.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. name.
Solution
Pour récupérer le nom de la fonction, nous devons 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()
This L'approche renvoie à la fois le nom du package et de la fonction, par ex. "paquet.fonction". Si vous le souhaitez, le nom du package peut être extrait en tokenisant la chaîne.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3