Maison >développement back-end >Golang >Comment récupérer les noms de fonctions à l'aide de Reflection in Go ?

Comment récupérer les noms de fonctions à l'aide de Reflection in Go ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-11 13:48:02227parcourir

How to Retrieve Function Names Using Reflection in Go?

Récupération des noms de fonctions à l'aide de la réflexion

Dans Go, le système de réflexion permet l'introspection et la manipulation des types et des valeurs au moment de l'exécution. Cependant, lors de la récupération du nom d'une fonction à l'aide de la méthode Name sur son type, une chaîne vide peut être renvoyée.

Pour résoudre ce problème, utilisez la fonction FuncForPc du package d'exécution. Il prend un pointeur vers une valeur de fonction et renvoie un objet *Func. Cet objet donne accès au nom de la fonction, qui peut être obtenu avec la méthode Name.

Voici une version modifiée de votre exemple utilisant FuncForPc :

package main

import (
    "fmt"
    "reflect"
    "runtime"
)

func main() {
    name := runtime.FuncForPC(reflect.ValueOf(main).Pointer()).Name()
    fmt.Println("Name of function :", name)
}

Ce code imprime le résultat suivant :

Name of function : main.main

Si vous avez uniquement besoin du nom de la fonction sans le préfixe du package, vous pouvez tokeniser le résultat Nom.

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!

Déclaration:
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