"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment récupérer le nom d'une fonction à l'aide de Reflection in Go ?

Comment récupérer le nom d'une fonction à l'aide de Reflection in Go ?

Publié le 2024-11-10
Parcourir:569

How to Retrieve a Function's Name Using 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 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.

Dernier tutoriel Plus>

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