首頁 > 後端開發 > Golang > Golang中如何取得呼叫者函數資訊?

Golang中如何取得呼叫者函數資訊?

Susan Sarandon
發布: 2024-12-26 05:50:32
原創
484 人瀏覽過

How Can I Get Caller Function Information in Golang?

在 Golang 中檢索呼叫者函數資訊

在 Golang 中,可以深入了解呼叫者函數。考慮以下程式碼片段:

func foo() {
    // Do something
}

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

問題出現了:我們如何確定 foo 是從 main 呼叫的?其他語言(例如 C#)使用 CallerMemberName 等屬性來簡化此任務。

值得慶幸的是,Golang 提供了帶有 runtime.Caller 函數的解決方案。

func Caller(skip int) (pc uintptr, file string, line int, ok bool)
登入後複製

範例實作

範例#1:列印呼叫者檔案名稱與行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()
}
登入後複製

範例#2:使用runtime.FuncForPC

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 中的呼叫函數資訊。

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

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