gpt4 book ai didi

mysql - 全局变量未传递到下一个包

转载 作者:IT王子 更新时间:2023-10-29 01:44:46 26 4
gpt4 key购买 nike

由于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")

开始.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 文件在同一个包中,您不需要在 DB 前添加前缀任何东西,因为两个文件都在同一个包中,它们都共享在包级别定义的变量。

例如:

.
└── foo
├── AchFactory.go
└── Start.go

Start.go

package foo

// ...

var DB *gorm.DB

// ...

AchFactory.go

package foo

func F() {
fmt.Println(">Loading Achievements")
DB.HasTable("achievements")
DB.Select("id", "group_name", "category", "level", "reward_pixels", "reward_points", "progress_needed", "game_id").Find("achievements")
fmt.Println(">Found Schema")
}

另一方面,如果 AchFactory.goStart.go 位于不同的包中,则 AchFactory.go 文件需要import 包含 Start.go 文件的包,然后访问导入包的导出成员,您在它们前面加上包的名称并将两者连接起来有一个点;例如packagename.Membername.

例如:

.
├── foo
│   └── Start.go
└── bar
└── AchFactory.go

Start.go

package foo

// ...

var DB *gorm.DB

// ...

AchFactory.go

package bar

import (
"fmt"
"path/to/foo"
)

func F() {
fmt.Println(">Loading Achievements")
foo.DB.HasTable("achievements")
foo.DB.Select("id", "group_name", "category", "level", "reward_pixels", "reward_points", "progress_needed", "game_id").Find("achievements")
fmt.Println(">Found Schema")
}

关于mysql - 全局变量未传递到下一个包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43929148/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com