Heim > Backend-Entwicklung > Golang > Wie kann ich den aktuellen Funktionsnamen in Go abrufen?

Wie kann ich den aktuellen Funktionsnamen in Go abrufen?

Patricia Arquette
Freigeben: 2024-12-30 13:02:13
Original
173 Leute haben es durchsucht

How Can I Get the Current Function Name in Go?

Erhalten des aktuellen Funktionsnamens in Go

Um den Ausführungsfluss eines Go-Programms zu verfolgen, kann es wünschenswert sein, den zu kennen aktueller Funktionsname. Dies kann für Debugging- oder Protokollierungszwecke nützlich sein.

Um den aktuellen Funktionsnamen in Go zu erhalten, kann man die Funktion runtime.FuncForPC verwenden, die einen Programmzähler (PC) als Argument verwendet und die entsprechende Funktion zurückgibt Objekt. Hier ist ein Beispiel dafür, wie dies verwendet werden kann:

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()
}
Nach dem Login kopieren

Bei der Ausführung gibt dieses Programm die folgende Ausgabe aus:

/path/to/file.go:13 trace
Nach dem Login kopieren

Diese Ausgabe zeigt an, dass die Trace-Funktion online aufgerufen wurde 13 der Datei file.go.

Hinweis: In Go-Versionen 1.7 und höher wird empfohlen, stattdessen runtime.CallersFrames zu verwenden runtime.FuncForPC. Das aktualisierte Beispiel mit runtime.CallersFrames lautet wie folgt:

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()
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich den aktuellen Funktionsnamen in Go abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage