回答

收藏

如何在 Go 中获取函数的名称?

技术问答 技术问答 301 人阅读 | 0 人回复 | 2023-09-12

给出函数,有可能得到它的名字吗?
4 q6 r, o, z( \3 F5 k4 C  F
    func foo() {}func GetFunctionName(i interface{}) string      / ...}func main()      / Will print "name: foo"    fmt.Println("name:",GetFunctionName(foo))}$ K# U1 g- a9 U- a' Q6 }& W
有人告诉我runtime.FuncForPC会有帮助,但我不知道怎么用。& c- T; R5 X; C) _
                                                               
8 [7 x. A$ p2 x$ I' H- ?$ e9 G" H    解决方案:                                                                3 Q6 s8 G2 {- z5 x6 s0 [1 y1 R
                                                                我找到了一个解决方案:
* K# D! Y* p- Y# n) ~. m/ E
    package mainimport  "fmt"    "reflect"    "runtime")func foo() {}func GetFunctionName(i interface{}) string    return runtime.FuncForPC(reflect.ValueOf(i).Pointer()).Name()}func main()    // This will print "name: main.foo"    fmt.Println("name:",GetFunctionName(foo))}
    3 w$ p7 }3 k% @; ]% m
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则