2 回答

TA貢獻(xiàn)1770條經(jīng)驗(yàn) 獲得超3個贊
創(chuàng)建一個為實(shí)體結(jié)構(gòu)實(shí)現(xiàn)的接口怎么樣?
type Entitier interface {
GetEntity() *Entity
}
該實(shí)現(xiàn)將簡單地返回一個指向自身的指針,您現(xiàn)在可以在DAO的Insert和Update方法中使用該指針。這還有一個額外的好處,就是讓您在 DAO 方法的聲明中更加具體。與其簡單地說明他們采用任意interface{}參數(shù)作為參數(shù),您現(xiàn)在可以說他們采用Entitier.
像這樣:
func (dao *mongoDAO) Update(id string, update Entitier) error
這是我的意思的最小完整示例:
http://play.golang.org/p/lpVs_61mfM
希望這能給你一些想法!您可能要調(diào)整的命名Entity/ Entitier/GetEntity風(fēng)格和清晰一旦你上的圖案來使用結(jié)算。

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超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 關(guān)注
- 236 瀏覽
添加回答
舉報