我正在尝试使用Go的反射系统来检索函数的名称,但是在调用其类型的Name方法时会得到一个空字符串。这是预期的行为吗?
这是我如何解决问题的简单示例:
package main import "fmt" import "reflect" func main() { typ := reflect.TypeOf(main) name := typ.Name() fmt.Println("Name of function" + name) }
解决方案是使用FuncForPc返回一个*Func。
*Func
返回"main.main":
"main.main"
package main import "fmt" import "reflect" import "runtime" func main() { name := runtime.FuncForPC(reflect.ValueOf(main).Pointer()).Name() fmt.Println("Name of function : " + name) }
如果需要"main",只需将其标记化即可。
"main"