给定一个函数,可以得到它的名字吗?说:
func foo() { } func GetFunctionName(i interface{}) string { // ... } func main() { // Will print "name: foo" fmt.Println("name:", GetFunctionName(foo)) }
有人告诉我runtime.FuncForPC会有所帮助,但我不明白如何使用它。
很抱歉回答我自己的问题,但我找到了解决方案:
package main import ( "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)) }