在 Golang 中,可以深入了解调用者函数。考虑以下代码片段:
func foo() { // Do something } func main() { foo() }
问题出现了:我们如何确定 foo 是从 main 调用的?其他语言(例如 C#)使用 CallerMemberName 等属性来简化此任务。
值得庆幸的是,Golang 提供了带有 runtime.Caller 函数的解决方案。
func Caller(skip int) (pc uintptr, file string, line int, ok bool)
示例#1:打印调用者文件名和行Number
package main import ( "fmt" "runtime" ) func foo() { _, file, no, ok := runtime.Caller(1) if ok { fmt.Printf("called from %s#%d\n", file, no) } } func main() { foo() }
示例#2:使用runtime.FuncForPC
package main import ( "fmt" "runtime" ) func foo() { pc, _, _, ok := runtime.Caller(1) details := runtime.FuncForPC(pc) if ok & details != nil { fmt.Printf("called from %s\n", details.Name()) } } func main() { foo() }
通过使用这些示例,您可以毫不费力地深入了解Go 中的调用函数信息。
以上是Golang中如何获取调用者函数信息?的详细内容。更多信息请关注PHP中文网其他相关文章!