Я использую Golang Revel для какого-то веб-проекта, и мне понравилось 12 проектов. Во всех из них у меня много избыточности кода из-за возвращаемых типов. Посмотрите на две функции:
func (c Helper) Brands() []*models.Brand{
//do some select on rethinkdb and populate correct model
var brands []*models.Brand
rows.All(&brands)
return brands
}
func (c Helper) BlogPosts() []*models.Post{
//do some select on rethinkdb and populate correct model
var posts []*models.Post
rows.All(&posts)
return posts
}
Как вы можете видеть, они оба возвращают одинаковый тип данных (тип struct). Моя идея состояла в том, чтобы передать строку var следующим образом:
func (c Helper) ReturnModels(modelName string) []*interface{} {
//do rethinkdb select with modelName and return []*interface{} for modelName
}
Подобно этому, у меня может быть только один помощник для возврата типов данных вместо повторять то же самое снова и снова для разных моделей, но с тем же типом данных.
Мои вопросы:
- Возможно ли это вообще
- Если да, вы можете указать мне правильные документы
- Если нет, я буду более счастлив ответить на ваш ответ:)