【发布时间】:2021-06-07 03:26:24
【问题描述】:
我正在尝试在调用它之前和之后记录修饰函数名称,如下所示。
是否可以在decorator 中获取修饰函数名称f1 使其显示entering f1 和leaving f1。
package main
import (
"fmt"
)
func f1() {
fmt.Println("f1")
}
func decorator(f func()) {
fmt.Println("entering f.name")
f()
fmt.Println("leaving f.name")
}
func main() {
decorator(f1)
}
【问题讨论】:
-
请参阅this answer,了解从函数内部进入和退出的简单方法。答案登录退出。在
timer函数的开头添加打印语句进行登录回车。 -
请注意,并非所有函数都有名称。
-
不是以一种很好的、受支持的、兼容的方式实际工作并且按照您认为应该工作的方式工作。
-
请看
runtime包,也许那里有可以帮助你的东西。 -
@mri1939 是的,我正在尝试
runtime.Callers、runtime.FuncForPC和runtime.CallersFrames,如果我有一些线索会更新