我正在尝试在调用它之前和之后记录修饰的函数名称,如下所示。是否可以将修饰的函数名称放入以使其显示和。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 关注
- 229 浏览
添加回答
举报
0/150
	提交
		取消
	