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

时间:2019-08-08 03:28:09

标签: 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)
....

and handler.go包含所有混乱的东西。

谢谢

1 个答案:

答案 0 :(得分:1)

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

“为了使Go理解我所指的是db和err变量,我该怎么办?” 您需要qualify。与您使用sql.Open告诉Go一样,您引用的是包Open中声明的函数database/sql


我也建议您服用Tour of Go