去,异或 - 从其他包导入异或实例,但将为零

为什么是零?它已经困扰了我大约三个小时。


主要.go


package main


import (

    "sample/db"

)


func main() {    

    println(db.Xorm)       //nil...why...?

}

数据库/异物语


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 中定义 “样本变量字符串” 并从 main.go 导入时,它不会为零。


慕神8447489
浏览 62回答 1
1回答

qq_花开花谢_0

生产线Xorm, err := xorm.NewEngine("postgres", url)(请注意 )正在函数的作用域内创建一个新的局部变量,该变量隐藏具有相同名称的包级变量,因此,包级变量将保留 。:=Xorminit()nil仅用于分配应该可以解决问题,例如:=var err errorXorm, err = xorm.NewEngine("postgres", url)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go