不能在go lang中分配* gorm.DB

时间:2016-03-16 09:00:32

标签: go

我试图从gorm返回一个实例。打开()返回它我得到了以下错误

controllers/db.go:34: cannot assign *gorm.DB to dc.DB (type gorm.DB) in multiple assignment

这是db.go控制器

    package controllers

import (

  //"fmt"

  _ "github.com/go-sql-driver/mysql"
  //v "github.com/spf13/viper"
  "github.com/jinzhu/gorm"

)

type DBController struct {
    DB gorm.DB
}

func (dc *DBController) InitDB() {
    var err error


    dc.DB, err = gorm.Open("mysql","root:12345@tcp(localhost:3306)/api")
    if err != nil {
        log.Fatalf("Error when connect database, the error is '%v'", err)
    }
    dc.DB.LogMode(true)
}

func (dc *DBController) GetDB() gorm.DB {
  return dc.DB
}

此错误的原因是什么?如何解决此问题?

1 个答案:

答案 0 :(得分:0)

你需要并且很可能你想在控制器的结构中有一个指针。使用指向数据库对象(gorm.DB)的指针传递结构将阻止Go制作此对象的副本(gorm.DB)。

执行以下操作:

type DBController struct {
    DB *gorm.DB
}

现在它应该可以正常工作。