【发布时间】:2026-01-17 04:45:01
【问题描述】:
是否可以在 Golang 中获取有关调用者函数的信息?例如,如果我有
func foo() {
//Do something
}
func main() {
foo()
}
我怎样才能知道foo 已从main 调用?
我可以用其他语言做到这一点(例如在 C# 中我只需要使用CallerMemberName 类属性)
【问题讨论】:
-
是的,有可能 - 请参阅 golang.org/pkg/runtime/#Callers
-
是的,但尽管有可能它通常显示出糟糕的设计决策。除了调试目的之外,它没有任何意义。所有必要的信息都应该作为函数参数传递,或者像闭包变量一样。
-
举个例子,看看stretchr/testify库是怎么做的:github.com/stretchr/testify/blob/v1.1.3/assert/…
标签: go