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

给定一个函数,可以得到它的名字吗?说:

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))

}

以上是 如何在Go中获取函数名称? 的全部内容, 来源链接: utcz.com/qa/411085.html

回到顶部