go源碼分析(五) 獲取函數名和調用者的函數名


參考資料

實現代碼保存在我的github

// input flag 1:FunName 2:CallerFunName
func GetFuncName(flag int) string {
    if flag != 1 && flag != 2 {
        flag = 1
    }
    pc, _, _, _ := Caller(flag)
    return FuncForPC(pc).Name()
}

測試代碼

func main() {
    test()
}
func test{
    fmt.Println(runtime.GetFuncName(1), runtime.GetFuncName(2), runtime.GetFuncName(3))
}

輸出

  main.test main.main main.test

1 為函數名,2 為 調用者名,3 未識別的調用,設置成1

其實0 就是函數本身 GetFuncName,為一個函數調用棧


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM