我有一个接口Model,由struct实现Person.
要获取模型实例,我有以下帮助函数:
func newModel(c string) Model {
switch c {
case "person":
return newPerson()
}
return nil
}
func newPerson() *Person {
return &Person{}
}
Run Code Online (Sandbox Code Playgroud)
上面的方法允许我返回一个正确类型的Person实例(稍后可以使用相同的方法轻松添加新模型).
当我尝试做类似的事情来返回一片模型时,我得到一个错误.码:
func newModels(c string) []Model {
switch c {
case "person":
return newPersons()
}
return nil
}
func newPersons() *[]Person {
var models []Person
return &models
}
Run Code Online (Sandbox Code Playgroud)
去投诉: cannot use newPersons() (type []Person) as type []Model in return argument
我的目标是回到请求任何机型的切片(是否[]Person,[]FutureModel,[]Terminator2000,W/E).我缺少什么,我该如何正确实施这样的解决方案?
我正在尝试将一片结构分配给一个切片[]interface{}(传递到AppEngine中datastore.PutMulti.但是,这会导致编译错误,因为这两种类型显然是不兼容的:
cannot use type[]*MyStruct as type []interface { } in assignment
基本上我有:
var src []*MyStruct
var dest []interface{}
…
dest = src // This line fails.
Run Code Online (Sandbox Code Playgroud)
有没有反复复制src到dest每个元素一次一个?