Comment récupérer les noms de fonctions dans Go
Il est souvent souhaitable d'obtenir le nom d'une fonction dans Go pendant l'exécution. Cela peut être utile à des fins de débogage, de journalisation ou d'autres tâches de métaprogrammation.
runtime.FuncForPC : une solution native
Go fournit une fonction intégrée, le runtime. FuncForPC, qui peut récupérer le nom d'une fonction à partir de son adresse PC (Program Counter). Cependant, cela nécessite une réflexion pour obtenir l'adresse du PC, ce qui peut être fastidieux.
Une approche simplifiée
Pour simplifier le processus, une solution simple utilisant la réflexion et le runtime. FuncForPC peut être implémenté :
package main import ( "fmt" "reflect" "runtime" ) func foo() { } func GetFunctionName(i interface{}) string { return runtime.FuncForPC(reflect.ValueOf(i).Pointer()).Name() } func main() { fmt.Println("name:", GetFunctionName(foo)) }
Cette fonction accepte un paramètre d'interface générique i et renvoie le nom de la fonction associée à cette interface. Dans ce cas, foo est la fonction dont le nom est récupéré.
Exemple d'utilisation
L'exemple suivant montre l'utilisation de la fonction GetFunctionName :
package main import ( "fmt" ) func foo() { } func main() { fmt.Println("name:", GetFunctionName(foo)) }
Lorsque vous exécutez ce programme, il affichera :
name: foo
Cela confirme que la fonction GetFunctionName récupère avec succès le nom de la fonction foo.
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!