我有一个接口 Model
,它是由 structPerson
实现的。
要获得一个模型实例,我有以下 helper 函数:
func newModel(c string) Model {
switch c {
case "person":
return newPerson()
}
return nil
}
func newPerson() *Person {
return &Person{}
}
上面的方法允许我返回一个正确类型的 Person 实例(以后可以用同样的方法轻松地添加新模型)。
当我试图为返回一个模型片段做类似的事情时,我得到了一个错误。代码:
func newModels(c string) []Model {
switch c {
case "person":
return newPersons()
}
return nil
}
func newPersons() *[]Person {
var models []Person
return &models
}
去抱怨: cannot use newPersons() (type []Person) as type []Model in return argument
我的目标是返回所请求的任何模型类型(无论是 []Person
、 []FutureModel
、 []Terminator2000
还是 w/e)的一个片段。我遗漏了什么,以及如何正确地实现这样的解决方案?