Maison >développement back-end >Golang >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 ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-08 15:37:01465parcourir

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 reflex.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.

Solution

Pour récupérer le nom de la fonction, nous besoin d'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()

Cette approche renvoie à la fois le nom du package et de la fonction, par exemple. "paquet.fonction". Si vous le souhaitez, le nom du package peut être extrait en tokenisant la chaîne.

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