У меня есть интерфейс Model
, который реализуется struct Person
.
Чтобы получить экземпляр модели, у меня есть следующие вспомогательные функции:
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
}
Go жалуется на: cannot use newPersons() (type []Person) as type []Model in return argument
Моя цель - вернуть фрагмент любого типа модели ([]Person
, []FutureModel
, []Terminator2000
, w/e). Что мне не хватает, и как я могу правильно реализовать такое решение?