我正在尝试使用Go的反射系统来检索函数的名称,但是在调用其类型的Name方法时却得到了一个空字符串。这是预期的行为吗?这是我如何解决问题的简单示例:package mainimport "fmt"import "reflect"func main() { typ := reflect.TypeOf(main) name := typ.Name() fmt.Println("Name of function" + name)}
3 回答
炎炎设计
TA贡献1808条经验 获得超4个赞
解决方案是使用FuncForPc返回一个*Func。
这将返回"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",只需将其标记化即可。
- 3 回答
- 0 关注
- 196 浏览
添加回答
举报
0/150
提交
取消