我试图为我希望在api中使用的模型创建一个通用界面。
type Model interface {
Create(interface{}) (int64, error)
Update(string, interface{}) (error)
}
我有一个实现它的personModel:
type Person struct {
Id int `json:"id"`
FirstName string `json:"firstName"`
}
type PersonModel struct {
Db *sql.DB
}
func (model *PersonModel) Create(personStruct person) (int64, error) {
// do database related stuff to create the person from the struct
}
func (model *PersonModel) Update(id string, personStruct person) (error) {
// do database related stuff to update the person model from the struct
}
但是,我无法解决此问题,因为我收到的错误与PersonModel
未实现Model
接口的方式有关。
我的主要目标是为我的应用程序中的所有模型(实现create
和update
)提供一个统一的界面,供控制器使用。我该如何克服这个问题?
答案 0 :(得分:1)
你应该尝试像这样实现你的方法,这只是因为你在你的func中创建并更新一个空接口作为params:
func (model *PersonModel) Create(v interface{}) (int64, error) {
// do database related stuff to create the person from the struct
}
func (model *PersonModel) Update(id string, v interface{}) (error) {
// do database related stuff to update the person model from the struct
}