可以获取有关 Go 中的调用函数的信息。这允许您跟踪调用堆栈,识别调用上下文,并执行各种调试或分析操作。
检索调用者信息的主要方法是runtime.Caller功能。它采用一个整数参数,指示在检索信息之前要跳过的堆栈帧数。默认情况下,它会跳过一帧,提供有关直接调用者的数据。
runtime.Caller 函数返回一个 uintptr、一个表示文件路径的字符串、一个表示行号的整数以及一个指示是否调用的布尔值。检索成功。
演示检索呼叫者文件名和行号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() }
有关更详细的信息,您可以使用runtime.FuncForPC获取代表调用函数的*Func对象。该对象提供对其他数据的访问,例如函数名称和包路径。
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 中调用方函数的信息,这对于调试、分析非常有价值,以及其他高级编程场景。
以上是如何在 Go 中检索调用者函数信息?的详细内容。更多信息请关注PHP中文网其他相关文章!