2 回答

TA貢獻1853條經驗 獲得超9個贊
在創(chuàng)建 db 時,我通常喜歡遵循 Ben Johnson 的本指南: 請參閱 3. Wrap types for application-specific context
這篇文章提到我們可以通過與接口交互在這里提供一個抽象層,所以你不需要在應用層泄露這些細節(jié)。您提到您想要執(zhí)行查詢和其他命令,以便您可以針對這些命令繪制一個界面,如下所示:
type Mysql struct {
db *sql.DB
}
// Wrap a new connection into the MySql struct
func NewMysql() (*Mysql, error) {
db, err := sql.Open(...)
return &Mysql{ db }, err
}
func (m *Mysql) GetUsers(...) ([]User, error) {}
func (m *Mysql) CreateUsers(...) (User, error) {}
type UserStore interface {
GetUsers func(...) []User, error)
CreateUsers func(...) (User, error)
}

TA貢獻1829條經驗 獲得超4個贊
這絕對是不正確的:
MySqlDatabase
沒有實現(xiàn)IMySqlDatabase
,所以如果你真的嘗試使用該接口,它將無法工作你實際上并沒有使用界面
并且有風格問題:
接口返回具體類型,這違背了目的
界面似乎是自己的工廠?或者其他的東西?目前還不清楚接口或具體類型應該是/做什么
Go 中的接口不應該被命名
IThing
,那是 C#您似乎有修改全局變量的類型方法,這對于任何使用它們的人來說都是非常出乎意料的
- 2 回答
- 0 關注
- 118 瀏覽
添加回答
舉報