我通常在主程序包
中声明一个公共Db
变量
package main
var Db *sql.DB
func main() {
var err error
Db, err = sql.Open("sqlite3", BARS_FILE)
if err != nil {
log.Fatal(err)
}
defer Db.Close()
// passing Db as a parameter to other functions in other packages (database
// repositories)
}
有更好的方法吗?
答案 0 :(得分:2)
根据http://golang.org/pkg/database/sql/#DB,以这种方式使用sql.DB是安全的:
DB是一个数据库句柄。多个并发使用是安全的 够程。
恕我直言,可以这样使用它。也许以后,当这个变量成为瓶颈时,你可以创建更多的句柄。如果许多gouroutines开始使用它可能会发生。但在有必要之前不要进行优化。