首頁 > 後端開發 > Golang > Go中如何取得目前函數名稱?

Go中如何取得目前函數名稱?

Patricia Arquette
發布: 2024-12-30 13:02:13
原創
173 人瀏覽過

How Can I Get the Current Function Name in Go?

取得 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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板