Maison > développement back-end > Golang > Go peut-il récupérer par programme le nom d'une fonction ?

Go peut-il récupérer par programme le nom d'une fonction ?

Mary-Kate Olsen
Libérer: 2024-12-24 10:02:55
original
897 Les gens l'ont consulté

Can Go Programmatically Retrieve a Function's Name?

Récupération des noms de fonctions dans Go

Question :

Est-il possible de récupérer par programme le nom d'une fonction dans Go ? Par exemple, étant donné la fonction foo(), peut-on déterminer son nom à l'aide d'une méthode comme GetFunctionName(foo) ?

Réponse :

Oui, il est possible de obtenir le nom d'une fonction dans Go en utilisant le runtime.FuncForPC function.

Solution :

Voici une solution utilisant runtime.FuncForPC :

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

Explication :

  • reflect.ValueOf(i).Pointer() récupère l'adresse mémoire de la fonction i.
  • runtime.FuncForPC prend le pointeur et renvoie une valeur runtime.Func.
  • runtime.Func.Name() renvoie le nom de la fonction associée à la valeur runtime.Func .

En appelant GetFunctionName(foo), vous obtiendrez la chaîne "foo" comme résultat.

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