在 golang 中获取修饰函数名称

我正在尝试在调用它之前和之后记录修饰的函数名称,如下所示。


是否可以将修饰的函数名称放入以使其显示和。f1decoratorentering f1leaving 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)


}


慕雪6442864
浏览 228回答 1
1回答

喵喵时光机

您可以使用反射和运行时包package mainimport ("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.f1f1leaving f.name:main.f1``
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go