问答 / 0 / 8 / 创建于 3年前 / 更新于 3年前
// models/common.go var DB *gorm.DB func DoA() { fmt.Println(DB) // 输出是nil } func init () { DB, err := gorm.Open(..) } // main.go func main() { models.DoA() }
测试使用个string可以,但是用gorm就一直说变量是nil 为啥捏
:= 是声明并赋值init 有自己的作用域并不是全局的
先判断orm是否连接成功。为nil就是orm连接失败了啊
你这是两个DB把?一个局部变量,一个全局变量
但是我换成如下代码在init里对个字符串赋值 ok的
var DB string func init () { DB = "abc" }
:=
=
init 内的DB 是 局部的,外面的DB 是全局的
我要举报该,理由是:
:= 是声明并赋值
init 有自己的作用域并不是全局的