我正在尝试在调用它之前和之后记录修饰的函数名称,如下所示。是否可以将修饰的函数名称放入以使其显示和。f1decoratorentering f1leaving f1package mainimport ( "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)}
1 回答

喵喵时光机
TA贡献1846条经验 获得超7个赞
您可以使用反射和运行时包
package main
import (
"fmt"
"reflect"
"runtime"
)
func f1() {
fmt.Println("f1")
}
func decorator(f func()) {
name := runtime.FuncForPC(reflect.ValueOf(f).Pointer()).Name()
fmt.Printf("entering f.name:%s\n",name)
f()
fmt.Printf("leaving f.name:%s\n",name)
}
func main() {
decorator(f1)
}
entering f.name:main.f1
f1
leaving f.name:main.f1
``
- 1 回答
- 0 关注
- 227 浏览
添加回答
举报
0/150
提交
取消