登录
首页 >  Golang >  Go问答

Go 中的可变阴影

来源:Golang技术栈

时间:2023-04-26 13:05:15 170浏览 收藏

在IT行业这个发展更新速度很快的行业,只有不停止的学习,才不会被行业所淘汰。如果你是Golang学习者,那么本文《Go 中的可变阴影》就很适合你!本篇内容主要包括Go 中的可变阴影,希望对大家的知识积累有所帮助,助力实战开发!

问题内容

以下代码生成编译错误:“错误声明且未使用”。如果这里有范围/阴影问题,那是由于我不理解的原理。有人可以解释吗?

package main

import (
    "fmt"
)

func main() {
    var (
        err error
        dto = make(map[string]interface{})
    )

    dto[`thing`],err = getThings();
    fmt.Println(dto[`thing`]);
}

func getThings() (string,error) {
    return `the thing`,nil
}

正确答案

这不是因为任何阴影。您没有使用err为任何东西声明的变量,而是为其赋值。

根据常见问题

未使用变量的存在可能表明存在错误,而未使用的导入只会减慢编译速度。在你的代码树中积累足够多的未使用的导入,事情会变得非常缓慢。由于这些原因,Go 既不允许

如果你声明一个变量,它必须被使用

在给定的程序err中声明并用于将数据分配给 . 的值err根本没有使用

您可以通过执行 _ 分配来绕过这种错误

IE,

  var _ = err

或使用err类似

  if err != nil {
      fmt.Println(err.Error())
      return
  }

下面的代码可以解决它,但我建议使用 err 来检查错误

package main

import (
    "fmt"
)

func main() {
    var (
        err error
        dto = make(map[string]interface{})
    )
    _ = err

    dto[`thing`], err = getThings()
    fmt.Println(dto[`thing`])
}

func getThings() (string, error) {
    return `the thing`, nil
}

PS: 你必须使用你在函数中声明的变量,但如果你有未使用的全局变量也 没关系。 有未使用的函数参数也是可以的。

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>