mongodb - 使用 := gives unused error but using = don't in Go

标签 mongodb go compiler-errors mgo go-gin

我有一段代码,当我使用 := 时出现错误,但是当我使用 = 时它编译正确。我学到的是 := 只需要至少定义一个变量,其他的不需要定义,但考虑到这段代码是 Go 中的一个错误吗?

不可编译的代码:

错误:services/db_service.go:16: session 已声明但未使用

package services

import (
    "gopkg.in/mgo.v2"
    "log"
)

const DB = "mmdb_dev"

var Session *mgo.Session

func InitMongo() bool {
    url := "mongodb://localhost"
    log.Println("Establishing MongoDB connection...")
    //var err error
    Session, err := mgo.Dial(url)
    if err != nil {
        log.Fatal("Cannot connect to MongoDB!")
        return true
    } else {
        return false
    }
}

func GetNewSession() mgo.Session {
    return *Session.Copy()
}

编译代码

package services

import (
    "gopkg.in/mgo.v2"
    "log"
)

const DB = "mmdb_dev"

var Session *mgo.Session

func InitMongo() bool {
    url := "mongodb://localhost"
    log.Println("Establishing MongoDB connection...")
    var err error
    Session, err = mgo.Dial(url)
    if err != nil {
        log.Fatal("Cannot connect to MongoDB!")
        return true
    } else {
        return false
    }
}

func GetNewSession() mgo.Session {
    return *Session.Copy()
}

变化是

Session, err := mgo.Dial(url) 

var err error
Session, err = mgo.Dial(url)

最佳答案

运算符 := 用于 short variable declaration .它声明并初始化变量。

在您的第一个示例中,您已在全局范围内声明了 Session 变量,并在 main 函数中声明了一个在主范围内具有相同名称的新变量(如你使用了 := 运算符)。因此,在全局范围内声明的 Session 变量未被使用,因此出现错误。

在您的第二个示例中,您使用赋值运算符 = 为全局变量分配了一个值,因此它没有声明一个新的 Session 变量,而是为现有的全局变量分配一个值变量。

请查找 example显示全局变量和局部变量之间的差异。

关于mongodb - 使用 := gives unused error but using = don't in Go,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45093599/

相关文章:

MongoDB + Neo4J vs OrientDB vs ArangoDB

struct - Go 中的自动类型断言

methods - Golang 方法参数接口(interface){}

go - http.ServeFile 在服务器 golang 上返回 404 not found 错误

mongodb - 使用 mongodb+srv 连接到部署为有状态集的 mongodb

java - 在java中将ObjectID(Mongodb)转换为字符串

java - 初级 boolean 编译错误

c - 错误 C2106 : '=' : left operand must be l-value in c on VS2008

c++ - 为某些模板参数发出编译错误

MongoDB聚合三个集合