在Golang中与多个包共享全局定义的db conn

前端之家收集整理的这篇文章主要介绍了在Golang中与多个包共享全局定义的db conn前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经阅读了一些关于我们应该如何处理数据库连接的StackOverflow的答案.由于它是一个池,我们可以在全局定义它,并在多个goroutines中使用它,它是安全的.

我遇到的问题是我将我的REST API分成多个包.每个这些包都需要一个数据库连接,所以我在启动时打开一个数据库连接.但是,即使我在全局定义连接,它只是在包级别.我可以做什么来潜在地在多个包之间分享

对于某些上下文我在我的应用程序中使用Postgresql驱动程序和gin-gonic.

还可以选择创建另一个包来保存数据库连接相关设置.然后,它可以具有一个包级别的全局,可以在main中初始化,并在导入它的任何包中使用.

这样,您可以显式地看到正在导入数据库包.这是一些示例代码.

@H_301_11@package database var ( // DBCon is the connection handle // for the database DBCon *sql.DB ) @H_301_11@package main import "myApp/database" func main() { var err error database.DBCon,err = sql.Open("postgres","user=myname dbname=dbname sslmode=disable") } @H_301_11@package user import "myApp/database" func Index() { // database handle is available here database.DBCon ... }
原文链接:https://www.f2er.com/go/186810.html

猜你在找的Go相关文章