以下代码生成编译错误:"错误声明且未使用"。如果此处存在范围/影子问题,则由于我不了解的原则。有人可以解释一下吗?
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
}
答案 0 :(得分:3)
这不是因为任何阴影。您没有使用为任何事情声明的err
变量,而是为其赋值。
根据常见问题解答
未使用的变量的存在可能表示错误,而未使用 导入只会减慢编译速度。累积足够的未使用的进口 在你的代码树中,事情会变得很慢。出于这些原因,Go 不允许
如果声明一个必须使用的变量
在给定的程序中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
}
PS:您必须使用在函数内声明的变量,但如果您有未使用的全局变量,则确定。拥有未使用的函数参数也是可以的。