Maison > développement back-end > Golang > le corps du texte

Comment récupérer un nom de fonction à l'aide de Reflection in Go ?

Linda Hamilton
Libérer: 2024-11-08 10:55:02
original
645 Les gens l'ont consulté

How to Retrieve a Function Name Using Reflection in Go?

Accès au nom de la fonction avec Reflection in Go

Reflection in Go permet aux développeurs d'introspecter les types et les valeurs de n'importe quelle variable. Une tâche courante consiste à récupérer le nom d'une fonction. Cependant, les tentatives d'accès à la méthode Name directement sur le type de la fonction peuvent entraîner une chaîne vide.

Comportement attendu

L'extrait de code fourni importe correctement les éléments nécessaires des paquets de réflexion. Cependant, le problème survient lorsque l'on tente de récupérer le nom de la fonction directement à partir du type.

name := typ.Name()
Copier après la connexion

Cette approche ne donne pas le résultat attendu car la méthode Name opère sur le pointeur de fonction réel, pas sur le type. Pour obtenir le nom correct, la fonction FuncForPC du package d'exécution doit être utilisée.

Solution

La fonction FuncForPC prend le pointeur vers le reflet.Valeur de la fonction et renvoie un objet *Func. Cet objet fournit la méthode Name correcte, qui peut être utilisée pour récupérer le nom de la fonction.

name := runtime.FuncForPC(reflect.ValueOf(main).Pointer()).Name()
Copier après la connexion

À l'aide de la démonstration fournie, le code imprimera désormais correctement "main.main". Si seul le nom de la fonction est souhaité, il peut être extrait en divisant la chaîne renvoyée.

Conclusion

En utilisant la réflexion et la fonction FuncForPC, les développeurs peuvent récupérer avec précision le nom de la fonction. nom de n’importe quelle fonction dans Go. Cette technique permet divers cas d'utilisation, tels que l'inspection de la structure du code et l'exécution d'appels de fonctions dynamiques.

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