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() }
Bei der Ausführung gibt dieses Programm die folgende Ausgabe aus:
/path/to/file.go:13 trace
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() }
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!