使用反射获取函数名称

我正在尝试使用Go的反射系统来检索函数的名称,但是在调用其类型的Name方法时却得到了一个空字符串。这是预期的行为吗?


这是我如何解决问题的简单示例:


package main


import "fmt"

import "reflect"


func main() {

    typ := reflect.TypeOf(main)

    name := typ.Name()

    fmt.Println("Name of function" + name)

}


12345678_0001
浏览 197回答 3
3回答

炎炎设计

解决方案是使用FuncForPc返回一个*Func。这将返回"main.main":package mainimport "fmt"import "reflect"import "runtime"func main() {    name := runtime.FuncForPC(reflect.ValueOf(main).Pointer()).Name()    fmt.Println("Name of function : " + name)}如果需要"main",只需将其标记化即可。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go