Go 中是否有任何与 Java 等语言提供的动态类实例化功能等效的东西(注意:为了简洁起见,此处省略了必要的异常处理逻辑):
Class cls = Class.forName("org.company.domain.User");
Constructor<User> userConstructor = cls.getConstructor();
User user1 = userConstructor.newInstance();
上面的简短 Java 代码段实质上是通过提供的完全限定的类路径字符串获取对类的引用,然后使用类引用来获取对零参数构造函数(如果存在)的引用,最后使用构造函数来获取对类实例的引用。
我还没有在Go中找到一个类似机制的例子,可以达到类似的结果。更具体地说,go 中的反射包似乎要求调用方已经引用了他们希望实例化的结构类型。这方面的标准成语似乎如下:
reflect.New(reflect.TypeOf(domain.User))
注:提供给反射的参数。TypeOf 函数必须是 Type 而不是字符串。是否可以在 Go 中通过反射包实例化结构,只使用其完全限定的名称?
海绵宝宝撒
相关分类