我在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
函数中对其他包的任何调用中?
答案 0 :(得分:3)
我将在我的某个应用中分享一些代码。
首先...
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
}
希望这有帮助。