我在我的 main
包中声明我的数据库连接,有点像这样:
package main
var Db *sql.DB
func main() {
var err error
db, err = sql.Open("postgres", "stuff...")
// error handling and more app stuff
}
首先,我将所有代码都放在 main
包中,并且我可以从其他文件访问数据库连接。但是,我想将代码分离到包中,现在 Db
变量不再可见。
是否可以跨包共享它,或者我是否必须将它作为参数添加到我的 main
函数中对其他包的任何调用?
最佳答案
我将分享一些目前在我的一个应用中的代码。
首先...
package conf
import (
"github.com/jinzhu/gorm"
_ "github.com/lib/pq"
)
func ConnectDB() *gorm.DB {
db, err := gorm.Open("postgres", /**/)
if err!=nil {
panic(err)
}
db.LogMode(true)
return &db
}
然后....
package model
import (
"github.com/jinzhu/gorm"
)
var DB *gorm.DB
func SetDatabase(db *gorm.DB) {
DB = db
// Some other set up here
}
最后...
package main
import (
"conf"
"model"
)
func main() {
db := conf.ConnectDB()
model.SetDatabase(db)
// Some other stuff
}
希望这对您有所帮助。
关于database - 如何在 Go 中的包之间共享数据库连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28751402/