Obtention du nom de la fonction actuelle dans Go
Afin de retracer le flux d'exécution d'un programme Go, il peut être souhaitable de connaître le nom de la fonction actuelle. Cela peut être utile à des fins de débogage ou de journalisation.
Pour obtenir le nom de la fonction actuelle dans Go, on peut utiliser la fonction runtime.FuncForPC, qui prend un compteur de programme (PC) comme argument et renvoie la fonction correspondante. objet. Voici un exemple de la façon dont cela peut être utilisé :
package main import ( "fmt" "runtime" ) func trace() { pc := make([]uintptr, 10) // at least 1 entry needed 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()) } func main() { trace() }
Une fois exécuté, ce programme affichera la sortie suivante :
/path/to/file.go:13 trace
Cette sortie indique que la fonction de trace a été appelée en ligne 13 du fichier file.go.
Remarque : Dans les versions Go 1.7 et supérieures, il est recommandé d'utiliser runtime.CallersFrames au lieu de runtime.FuncForPC. L'exemple mis à jour utilisant runtime.CallersFrames est le suivant :
package main import ( "fmt" "runtime" ) func trace() { pcs := make([]uintptr, 10) n := runtime.CallersFrames(2, pcs) frames := runtime.CallersFrames(n) frame, _ := frames.Next() fmt.Printf("%s:%d %s\n", frame.File, frame.Line, frame.Function) } func main() { trace() }
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!