gorm不能在init阶段赋值吗?

代码

// 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 有自己的作用域并不是全局的

file

file

2年前 评论
哪吒的狗腿子 2年前
讨论数量: 8

:= 是声明并赋值
init 有自己的作用域并不是全局的

file

file

2年前 评论
哪吒的狗腿子 2年前

先判断orm是否连接成功。为nil就是orm连接失败了啊

2年前 评论
cevin (楼主) 2年前

你这是两个DB把?一个局部变量,一个全局变量

2年前 评论
cevin (楼主) 2年前
Mr-houzi (作者) 2年前

:= 是声明并赋值
init 有自己的作用域并不是全局的

file

file

2年前 评论
哪吒的狗腿子 2年前

init 内的DB 是 局部的,外面的DB 是全局的

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!