如何在Go中获取函数名称?
给定一个函数,可以得到它的名字吗?说:
func foo() {}
func GetFunctionName(i interface{}) string {
// ...
}
func main() {
// Will print "name: foo"
fmt.Println("name:", GetFunctionName(foo))
}
有人告诉我runtime.FuncForPC会有所帮助,但我不明白如何使用它。
回答:
很抱歉回答我自己的问题,但我找到了解决方案:
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))
}
以上是 如何在Go中获取函数名称? 的全部内容, 来源链接: utcz.com/qa/411085.html