【发布时间】:2017-10-20 11:19:37
【问题描述】:
我已经知道如何获取函数名和函数位置了:
func Trace(str string) string {
pc := make([]uintptr, 10) // at least 1 entry needed
runtime.Callers(2, pc)
f := runtime.FuncForPC(pc[0])
file, line := f.FileLine(pc[0])
str = Replace(str, "\n", ` `)
return `-- ` + fmt.Sprintf("%s:%d %s:%s", file, line, f.Name() + str)
}
但是如何获取函数参数值呢?例如,如果我在以下范围内调用 Trace 函数:
func Test1(a string, b int) {
Trace(`demo`)
}
func main() {
Test1(`aaaa`,123)
}
我想在Trace 函数中获取值aaaa 和123,而不必手动将它们从Test1 传递到Trace 函数
【问题讨论】:
-
你找到解决办法了吗
-
如何在示例对象映射中获取传递给方法的参数
-
哦,对于非对象方法(一个普通函数),我认为仍然是不可能的..github.com/golang/go/issues/12384
标签: go reflection