go反射

itgeniusshuai · · 811 次点击
这个不是对象池,这个是工厂的池,创建器的池…… 比如我前面缓存的代码里,实现其实是靠下面这几块的。 factories = make(map[string]Factory) type DriverConfig interface { Create() (Driver, error) } type Factory func() DriverConfig func Register(name string, f Factory) { } 如果实在要用 reflect.New(Type),你直接把map里值设为 reflect.Type就行了。 但你如果用过golang反射包的话,golang是没有构建函数的,你 reflect.New(Type)是没用的,取到的是一个指向空的指针。还是需要自己的构建函数去构建的。
#11
更多评论
没有这样的反射。建议你,如果有这样的需求,还不如使用类似 PHP 这样的动态语言
#1
结构的名称来创建一个结构实例 我听着你是要做一个工厂模式? 看一下sql的驱动部分的实现吧,怎么从一个字符串来创建一个驱动的interface。
#2