有没有办法使用Go反射获取全名类型?

时间:2015-04-09 08:34:12

标签: go

在Java中,可以通过返回类类型的Class.forName("com.my_pkg_name.MyClass")来完成。

似乎Go反射只能找到Type by Value但不允许名字输入。在实现与Go代码交互的脚本语言解释器时,此功能非常有用。

1 个答案:

答案 0 :(得分:5)

除非您明确注册类型,否则不会像gob包那样。像

这样的东西
// NOTE Should be protected by a mutex.
var types map[string]reflect.Type

func Register(value interface{}) {
    t := reflect.TypeOf(value)
    name := t.PkgPath() + "." + t.Name()
    types[name] = t
}

func TypeByName(name string) reflect.Type {
    return types[name]
}