go - 来自不同文件的全局变量 Golang

标签 go

我有两个不同的文件:(1)/common/handler.go 和 (2) main.go。

(/common/handler.go)文件中,我声明了

var db *sql.DB
var err error

作为全局变量(在顶层,导入下面)。现在,我想在我的 main.go 文件中使用这两个变量,因为我的 main() 函数中有这行代码:

db, err = sql.Open("mysql","username:password@tcp(127.0.0.1:3306)/test123")

我应该怎么做才能让 Go 理解我指的是 db 和 err 变量?我什至以正确的方式这样做吗?如果没有,请告诉我最佳解决方案。

我之所以拆分成这两个文件是因为我想让代码更干净。

基本上,main.go 中的 main() 包含

router := mux.NewRouter()
router.HandleFunc("/", common.login)
....

handler.go 包含了所有乱七八糟的东西。

谢谢,

最佳答案

“我想在我的 main.go 中使用这两个变量” 你不能因为它们未导出,因此你需要 export他们。

“我应该怎么做才能让 Go 理解我指的是那个 db 和 err 变量?”您需要 qualify他们。这与您使用 sql.Open 告诉 Go 您指的是在包 database/sql 中声明的函数 Open 没有什么不同。


我还建议您使用 Tour of Go .

关于go - 来自不同文件的全局变量 Golang,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57404793/

相关文章:

Golang反射包 "is not a type"

go - 如何从 hyperledgerfabric 分类帐中获取数据并更新

arrays - 将 float64 数组转换为 float32 数组

unit-testing - 在 Golang 中对 GraphQL 进行单元测试

go - 将一个 map 分配给另一个 map 在 golang 中是安全的吗?

arrays - 我如何在 slice 内的 slice 上附加字符串?

go - RabbitMQ 发布/订阅实现不工作

bash - 使用 shell 脚本解析 consul 模板文件中的行

logging - 去哪里记录错误?

go - 在 go 中读取 windows 属性