首页 > 其他 > 详细

runtime.Caller()

时间:2020-11-06 20:18:28      阅读:34      评论:0      收藏:0      [点我收藏+]

1 这个函数主要是为了查看函数调用栈的问题,

package main
import (
    "fmt"
    "runtime"
)
func main() {
    for i := 0 ; i< 4; i++ {
        test(i)
    }
}
func test(skip int) {
    call(skip)
}
func call(skip int) {
    // skip为0的时候表示当前所在的函数,即栈顶,1是从栈顶往下数第二个,以此类推,
    // line为执行了所在函数内的哪一行,
    // file为函数所在的文件名,
    // pc是所在函数的指针,
    pc,file,line,ok := runtime.Caller(skip)
    pcName := runtime.FuncForPC(pc).Name()  //获取函数名
    fmt.Println(fmt.Sprintf("%v   %s   %d   %t   %s",pc,file,line,ok,pcName))
}
//17466820   /Users/hanhua/go/src/go_learn/main.go   16   true   main.call
//17466704   /Users/hanhua/go/src/go_learn/main.go   12   true   main.test
//17466695   /Users/hanhua/go/src/go_learn/main.go   8   true   main.main
//16990216   /usr/local/Cellar/go/1.15.2/libexec/src/runtime/proc.go   204   true   runtime.main

参考:https://blog.csdn.net/skh2015java/article/details/100042494

runtime.Caller()

原文:https://www.cnblogs.com/xxswkl/p/13938623.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!