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



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

似乎 Go 反射只能按值找到类型,但不允许名称键入。在实现与 Go 代码互操作的脚本语言解释器时,此功能非常有用。

除非像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]
}

最新更新