珠海十大网站建设公司,网页怎么搜索关键词,手机网站设计框架,长沙小程序app开发go的初始化方式有很多种#xff0c;在某些情况下容易引起重复初始化导致错误。 事例如下#xff1a;
当使用gorm连接数据库时定义了全局DB
var DB *gorm.DB 但是在后面某个函数内部初始化时导致DB重新初始化变成了局部变量#xff0c;导致原来的全局变量DB还是nil
func I…go的初始化方式有很多种在某些情况下容易引起重复初始化导致错误。 事例如下
当使用gorm连接数据库时定义了全局DB
var DB *gorm.DB 但是在后面某个函数内部初始化时导致DB重新初始化变成了局部变量导致原来的全局变量DB还是nil
func Init() {dsn : fmt.Sprintf(root:tcp(127.0.0.1:3306)/test?charsetutf8mb4parseTimeTruelocLocal)DB, _ gorm.Open(mysql.Open(dsn), gorm.Config{})if DB.Error ! nil {fmt.Println(连接失败)} else {fmt.Println(连接成功)}
}
以至于在后面的调用中报错如下
func (User *UserController) Find(c *gin.Context) {userlist : []models.User{}result : models.DB.Find(userlist)if result.Error ! nil {c.JSON(http.StatusOK, gin.H{code: 1,msg: 查询失败,data: nil,})} else {c.JSON(http.StatusOK, gin.H{code: 0,msg: 查询成功,data: userlist,})}}
runtime error: invalid memory address or nil pointer dereference
所以要警惕两种初始化方法重复使用。