定义好一个struct:
type Test struct{
//....
}
希望有这样一个函数:
func instance(name string) *Test{
//.....
}
调用:*Test test = instance("Test");
输入:struct名称
输出:名称对应的实例。
如何实现这样的函数?请指点。
谢谢
静态语言这种得反射支持。java中可以通过一定的规则加载字符串对应的类,进而实例化;目前 Go 中没法实现你这种需求。
ps:目前发布后不能修改,已经在开发,马上就可以修改了。
#2
更多评论
xuanWuObjs = make(map[string]func() IXuanWuObj)
func RegisterXuanWuObj(classname string, constructor func() IXuanWuObj) {
xuanWuObjs[classname] = constructor
}
func NewXuanWuObj(classname string) IXuanWuObj {
constructor, ok := xuanWuObjs[classname]
if !ok {
return nil
}
return constructor()
}
func NewTest() *Test() {
return &Test{}
}
func main(){
RegisterXuanWuObj("test", NewTest)
NewXuanWuObj("test")
}
#3