取得 Go 中目前的函數名稱
為了追蹤 Go 程式的執行流程,可能需要知道目前函數名稱。這對於調試或日誌記錄很有用。
要取得Go中的目前函數名稱,可以使用runtime.FuncForPC函數,該函數將程式計數器(PC)作為其參數並傳回對應的函數目的。以下是如何使用它的範例:
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() }
執行時,程式會列印以下輸出:
/path/to/file.go:13 trace
此輸出顯示追蹤函數被線上呼叫檔案file.go 的13 .
注意:在Go 1.7 及更高版本中,建議使用runtime.CallersFrames而不是運行時.FuncForPC。使用runtime.CallersFrames的更新範例如下:
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() }
以上是Go中如何取得目前函數名稱?的詳細內容。更多資訊請關注PHP中文網其他相關文章!