Maison > développement back-end > Golang > Comment puis-je obtenir le nom de la fonction actuelle dans Go ?

Comment puis-je obtenir le nom de la fonction actuelle dans Go ?

Patricia Arquette
Libérer: 2024-12-30 13:02:13
original
173 Les gens l'ont consulté

How Can I Get the Current Function Name in Go?

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()
}
Copier après la connexion

Une fois exécuté, ce programme affichera la sortie suivante :

/path/to/file.go:13 trace
Copier après la connexion

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()
}
Copier après la connexion

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