2 回答
TA贡献1770条经验 获得超3个赞
创建一个为实体结构实现的接口怎么样?
type Entitier interface {
GetEntity() *Entity
}
该实现将简单地返回一个指向自身的指针,您现在可以在DAO的Insert和Update方法中使用该指针。这还有一个额外的好处,就是让您在 DAO 方法的声明中更加具体。与其简单地说明他们采用任意interface{}参数作为参数,您现在可以说他们采用Entitier.
像这样:
func (dao *mongoDAO) Update(id string, update Entitier) error
这是我的意思的最小完整示例:
http://play.golang.org/p/lpVs_61mfM
希望这能给你一些想法!您可能要调整的命名Entity/ Entitier/GetEntity风格和清晰一旦你上的图案来使用结算。
TA贡献1836条经验 获得超5个赞
这种概括
DAO interface {
Insert(entity interface{}) error
看起来很霸道 你们都*models.User为 mongo断言
doc := entity.(*models.User)
并做
user := &models.User{}
userController.dao.Insert(user)
使用通用 DAO 接口时。为什么不更精确地定义接口?
DAO interface {
Insert(entity *models.User) error
- 2 回答
- 0 关注
- 197 浏览
添加回答
举报