Introspection du code Go : récupération du nom de la fonction actuelle
Dans Go, l'obtention du nom de la fonction actuelle est cruciale pour le débogage et le traçage. La macro FUNCTION dans gcc fournit cette fonctionnalité, et nous visons à l'émuler dans Go.
Solution
La clé réside dans le package d'exécution. Voici une solution :
import ( "fmt" "runtime" ) func trace() { pc := make([]uintptr, 10) // Need at least 1 entry runtime.Callers(2, pc) f := runtime.FuncForPC(pc[0]) file, line := f.FileLine(pc[0]) fmt.Printf("%s:%d %s\n", file, line, f.Name()) }
Cette fonction fonctionne en :
Exemple mis à jour
Pour les versions Go 1.7, l'approche recommandée consiste à utiliser runtime.CallersFrames au lieu de runtime.FuncForPC. Un exemple mis à jour ci-dessous :
import ( "fmt" "runtime" ) func trace() { pc := make([]uintptr, 10) // Need at least 1 entry runtime.CallersFrames(2, pc) frame, _ := runtime.CallersFrames(2, pc) fmt.Printf("%s:%d %s\n", frame[0].File, frame[0].Line, frame[0].Function) }
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!