当前位置: 首页 > 面试题库 >

使用:=给出未使用的错误,但是使用=不在Go中

尹弘壮
2023-03-14
问题内容

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

无法编译的代码

错误:services / db_service.go:16:会话已声明且未使用

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)

问题答案:

该运算符:=用于短变量声明。它声明并初始化变量

在第一个示例中,您已Session在全局范围中声明了变量,并且在main函数中声明了在主范围中具有相同名称的新变量(与使用:=operator相同)。因此,Session在全局范围内声明的变量未使用,因此会出错。

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

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



 类似资料:
  • 问题内容: JSON对象示例如下所示: 假设通过链接www.domain.com访问上述对象,并​​且我有以下用于表示数据的类 并且地址类如下: 当我尝试跑步时 我收到以下错误: 预期为BEGIN_ARRAY,但在上述代码行中为字符串。我不确定我设置班级的方式是否有问题。注意:我正在使用一个数组(LocationData []数据),因为该服务返回了多个位置,尽管我刚刚在上面显示的示例中包括了一个

  • 我遇到了一个奇怪的错误,在使用时,我的代码失败了,而不是单独运行时。 以下代码: 打印以下内容: 32.92041129078561(是的,我知道平均误差很差) 但是,当尝试优化参数时,相同的参数设置会产生错误: 结果如下: 为9个候选对象中的每一个匹配3次,总共27次匹配[并行(n_jobs=-1)]:使用后端LokyBackend和8个并发工作人员。[CV]激活=身份,解算器=lbfgs。。。

  • 开发的网站在远程服务器和本地机器上运行良好(使用STS IDE时),最近我开始使用Intellij IDEA(我创建了一个网站代码的副本,没有任何更改),我开始得到URL未规范化错误。 intellij处理Spring Security性的方式是否与STS有所不同?或者原因是什么? 我不想使用自定义火力。 这是来自属性: 错误是: 注:我正在使用JDK8、Spring Boot 2、Spring

  • 问题内容: 我正在尝试使用ESAPI.jar为我的Web应用程序提供安全性。基本上我刚刚开始使用ESAPI.jar。但是问题是我什至无法使用ESAPI运行简单的程序。小代码段是: 我收到此错误: 我尝试将3个ESAPI属性文件复制到我的源文件夹中,并在构建路径上进行配置,但是仍然没有成功。我尝试了许多排列和组合都无济于事。 请指导我。 属性文件的内容为: 问题答案: ESAPI.propertie

  • 我有一个storm拓扑,如下所示: 螺栓ta->螺栓b->螺栓tc->螺栓d 只是对请求进行一些格式化,并发出另一个元组。执行一些处理,并为接受的每个元组发出大约100个元组。和处理这些元组。所有的bolts都实现了。 MessageTimeoutInsecons:300

  • 我做了一个代码,尝试登录我的instagram账户,但它给了我很多错误。我怎样才能修好它们? 代码: 错误: 警告(来自警告模块):文件“C:\users\usuario\appdata\local\programs\python\python37\lib\site-packages\Selenium\webdriver\PhantomJS\webdriver.py”,第49行warnings.w