基本上,这就是您告诉/传递给的内容
runtime.Caller():返回条目之前要跳过的堆栈条目数。
如果你通过
0在你的代码,这意味着返回堆栈项,其中
runtime.Caller()被称为(如果 你
叫
runtime.Caller())。传递
1将跳过您的函数,并返回调用您的函数的函数:
pc, file, line, ok := runtime.Caller(1)if ok { fmt.Printf("Called from %s, line #%d, func: %vn", file, line, runtime.FuncForPC(pc).Name())}调用包含此功能的
subplay.A()示例(在我的示例中):
7 func main() { 8 // Comment line 9 subplay.A()10 }输出:
Called from /home/icza/gows/src/play/play.go, line #9, func: main.main
我们看到代码
play.go从包的函数
main()中打印出在第9行调用了我们的函数的代码
main。



