Maison > développement back-end > Golang > Comment puis-je obtenir le nom d'une fonction Go au moment de l'exécution ?

Comment puis-je obtenir le nom d'une fonction Go au moment de l'exécution ?

Mary-Kate Olsen
Libérer: 2024-12-25 14:58:13
original
187 Les gens l'ont consulté

How Can I Get a Go Function's Name at Runtime?

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))
}
Copier après la connexion

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))
}
Copier après la connexion

Lorsque vous exécutez ce programme, il affichera :

name: foo
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal