在Java中,可以通过Class.forName("com.my_pkg_name.MyClass")返回类类型来完成.
似乎Go反射只能找到Type by Value但不允许Name为Type.在实现与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]
}
Run Code Online (Sandbox Code Playgroud)