【发布时间】:2017-05-12 16:20:46
【问题描述】:
由于golang不支持循环依赖,而我只是刚开始使用golang。我的连接变量遇到了一堵小墙,我使用的是 gorm 驱动程序,而 MySQL 作为我的数据库引擎。
我正在尝试将连接变量传递给我的程序调用的下一个函数,该函数位于另一个文件中。 AchFactory.go
fmt.Println(">Loading Achievements")
Start.DB.HasTable("achievements")
Start.DB.Select("id", "group_name", "category", "level", "reward_pixels", "reward_points", "progress_needed", "game_id").Find("achievements")
fmt.Println(">Found Schema")
Start.go
var DB *gorm.DB
func Initi() {
fmt.Println("Initating!")
Connect()
}
func Connect() {
var err error
DB, err = gorm.Open("mysql", config.MYSQL_USER+":"+config.MYSQL_PASS+"@/"+config.MYSQL_DB+"?charset=utf8&parseTime=True&loc=Local")
if err != nil {
panic(err)
DB.Close()
}
fmt.Println(">Connection Succesful")
fmt.Println(">Test Query Starting")
TestQ()
}
func TestQ() {
DB.HasTable("tests")
fmt.Println(">Query Succesful!")
AchManager.GetAch()
}
只想知道我做错了什么,这样我就可以在将来防止这个错误。谢谢你:)
【问题讨论】:
-
你在哪里尝试将连接传递给
AchFactory.go? -
如果 Start.go 在包 x 下,你想调用变量 DB 到另一个包,你应该在变量名
x.DB之前添加包名然后点。 note: 好的包名要简短明了。它们是小写字母,没有下划线或混合大写字母。 -
请包含来自 Start.go 和 AchFactory.go 的导入语句。您还提到了一个您想要防止的错误,但您没有包含实际的错误消息,如果我们知道您遇到的确切错误,我们会更容易为您提供帮助。