如何在golang中获取调用者参数字符串?这不可能吗



如何在reflectCallArgs中返回user.Class.Name字符串。这不可能吗?

type User struct {
Class struct {
Name string
}
}
var user = &User{}
reflectCallArgs := func(src interface{}) string {
//how to get this string?
return "user.Class.Name"
}
reflectCallArgs(user.Class.Name)

通过查询runtime.Caller,您可以获得最接近的文件名和调用函数的行号。https://golang.org/pkg/runtime/#Caller

func Caller(skip int) (pc uintptr, file string, line int, ok bool)

调用者报告关于调用goroutine堆栈上函数调用的文件和行号信息。参数skip是要上升的堆栈帧数,0表示caller的调用者。(由于历史原因,调用方和调用方之间跳过的含义不同。(返回值报告相应调用的程序计数器、文件名和文件中的行号。如果无法恢复信息,则布尔ok为false。

但是,您需要有权访问该文件,并能够解析该文件(或单行(以获得"调用者参数字符串"。

相关内容

最新更新