登录
首页 >  Golang >  Go问答

如何获取当前函数名

来源:Golang技术栈

时间:2023-03-27 14:41:31 323浏览 收藏

“纵有疾风来,人生不言弃”,这句话送给正在学习Golang的朋友们,也希望在阅读本文《如何获取当前函数名》后,能够真的帮助到大家。我也会在后续的文章中,陆续更新Golang相关的技术文章,有好的建议欢迎大家在评论留言,非常感谢!

问题内容

出于跟踪目的,我想打印出当前函数名称,例如__FUNCTION__gcc 中的宏。

所以当我有一个功能

func foo () {
   trace()
}

它会自动打印出来Entering foo()...或类似的东西。

正确答案

[注:Go 1.7+ 建议使用runtime.CallersFrames代替runtime.FuncForPC另一个答案有一个更新的例子]。

运行时是你的朋友:

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())
}

好了,本文到此结束,带大家了解了《如何获取当前函数名》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>