1 回答
TA贡献1831条经验 获得超9个赞
您的dbType.DbConnect()方法返回DatabaseType带有初始化连接的 a ,但您完全忽略了返回值。
进一步 - 为了简化您的代码 - 看看有New(host string) *DB而不是三个不同的函数(New/DbConnect/GetDb)来做同样的事情。
例如
package datastore
type DB struct {
// Directly embed this
*sql.DB
}
func NewDB(host string) (*DB, error) {
db, err := sql.Open(...)
if err != nil {
return nil, err
}
return &DB{db}, nil
}
package main
var db *datastore.DB
func main() {
var err error
db, err = datastore.NewDB(host)
if err != nil {
log.Fatal(err)
}
err := someFunc()
}
func someFunc() error {
rows, err := db.Exec("DELETE FROM ...")
// Handle the error, parse the result, etc.
}
这减少了您必须做的杂耍,您仍然可以对您的数据库类型调用 close,因为它嵌入了*sql.DB- 无需实现您自己的Close()方法。
- 1 回答
- 0 关注
- 149 浏览
添加回答
举报