首頁 > 後端開發 > Golang > 如何在 Go 中檢索呼叫者函數資訊?

如何在 Go 中檢索呼叫者函數資訊?

Linda Hamilton
發布: 2024-12-20 08:56:11
原創
889 人瀏覽過

How Can I Retrieve Caller Function Information in Go?

檢索 Go 中的呼叫函數資訊

可以取得 Go 中的呼叫函數的資訊。這允許您追蹤呼叫堆疊,識別呼叫上下文,並執行各種偵錯或分析操作。

使用runtime.Caller

檢索呼叫者資訊的主要方法是runtime.Caller功能。它採用一個整數參數,指示在檢索資訊之前要跳過的堆疊幀數。預設情況下,它會跳過一幀,提供有關直接呼叫者的資料。

runtime.Caller 函數傳回一個 uintptr、一個表示檔案路徑的字串、一個表示行號的整數、一個指示是否呼叫的布林值。檢索成功。

範例:取得呼叫者檔案和行號

示範檢索呼叫者檔案名稱和行號number:

package main

import (
    "fmt"
    "runtime"
)

func foo() {
    _, file, no, ok := runtime.Caller(1)
    if ok {
        fmt.Printf("called from %s#%d\n", file, no)
    }
}

func main() {
    foo()
}
登入後複製

範例:使用runtime.FuncForPC擷取更多資訊

有關更詳細的信息,您可以使用runtime.FuncForPC來取得代表呼叫函數的*Func物件。該物件提供對其他資料的訪問​​,例如函數名稱和套件路徑。

package main

import (
    "fmt"
    "runtime"
)

func foo() {
    pc, _, _, ok := runtime.Caller(1)
    details := runtime.FuncForPC(pc)
    if ok & details != nil {
        fmt.Printf("called from %s\n", details.Name())
    }
}

func main() {
    foo()
}
登入後複製

使用這些方法,您可以輕鬆收集有關 Go 中調用方函數的信息,這對於調試、分析非常有價值,以及其他高級編程場景。

以上是如何在 Go 中檢索呼叫者函數資訊?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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