gpt4 book ai didi

go - Go 中的变量阴影

转载 作者:IT王子 更新时间:2023-10-29 01:58:18 25 4
gpt4 key购买 nike

以下代码生成编译错误:“err declared and not used”。如果这里存在范围/阴影问题,那是由于我不明白的原则。谁能解释一下?

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 变量,只是为它赋值。

根据常见问题解答

The presence of an unused variable may indicate a bug, while unused imports just slow down compilation. Accumulate enough unused imports in your code tree and things can get very slow. For these reasons, Go allows neither

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

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

你可以通过做一个_赋值来避免这种错误

即,

  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
}

附言:您必须使用您在函数内部声明的变量,但如果您有未使用的全局变量,则OK。有未使用的函数参数也是可以的。

关于go - Go 中的变量阴影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41708697/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com