我如何可以通过包名称列表中的所有结构和方法,或结构的名称来创建一个结构实例,如
```go
package test
type User struct {
Name string
}
func getStructNameByPackageName(packageName string) []string{
...
}
func createStructInstance(structName string) interface{}{
...
}
```
调用函数getstructnamebypackagename(“test”)我们将得到结果:['User']
调用函数createstructinstance(“test.User”)我们将得到结果:一个用户实例
我在网上浏览了很多网页,但是大多数人说不能这么做。如果可以的话,请告诉我,非常感谢。
<a href="/user/jarlyyn" title="@jarlyyn">@jarlyyn</a> 这样其实也行,不过和我想要的有些区别,
func init() {
sql.Register("mysql", &MySQLDriver{})
}
这个其实就是手动的创建实例,我的本意是利用反射,只有给你个包名就会去动态搜寻下的所有类,去创建,这样不用手动创建了,类似于java的Class.forName("com.test.User").newInstance(),go里面提供了reflect.New(Type),type我没有发现能通过字符串生成的,这样说不知道你明白了吗,不过你给的对象池的那种也是一个办法,reflect.New不行的话,我打算就用你建议的那种了
#10
更多评论