为什么是nil?它已经困扰我大约三个小时了。
main.go
package main
import (
"sample/db"
)
func main() {
println(db.Xorm) //nil...why...?
}db/xorm.go
package db
import (
_ "github.com/lib/pq"
"xorm.io/xorm"
)
var Xorm *xorm.Engine
func init() {
url := "user=test host=localhost password=test port=15432 dbname=test sslmode=disable"
Xorm, err := xorm.NewEngine("postgres", url)
_ = Xorm
println(Xorm) //This is not nil
if err != nil {
panic(err)
}
}当我在db/xorm.go中定义“SampleVariable字符串”并从main.go导入时,它不会为空。
发布于 2021-08-30 13:01:41
这条线
Xorm, err := xorm.NewEngine("postgres", url)(请注意,:=)在init()函数的作用域中创建了一个新的局部变量Xorm,它隐藏了具有相同名称的包级变量,因此,包级变量仍然是nil。
只使用=进行赋值应该可以解决这个问题,例如:
var err error
Xorm, err = xorm.NewEngine("postgres", url)https://stackoverflow.com/questions/68983986
复制相似问题