以下代码生成编译错误:“声明错误但未使用”。如果这里存在范围/阴影问题,那是由于我不理解的原理。有人可以解释一下吗?
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
}
Run Code Online (Sandbox Code Playgroud)
这不是因为有任何阴影。err
除了为它赋值之外,您还没有使用任何声明的变量。
根据常见问题解答
未使用的变量的存在可能表明存在错误,而未使用的导入只会减慢编译速度。在代码树中积累足够多未使用的导入,事情会变得非常慢。由于这些原因,Go 不允许
如果声明一个变量,则必须使用它
在给定的程序中err
已声明并用于将数据分配给 。err
根本不使用 的值
您可以通过执行 _ 赋值来绕过此类错误
IE,
var _ = err
Run Code Online (Sandbox Code Playgroud)
或使用err
像
if err != nil {
fmt.Println(err.Error())
return
}
Run Code Online (Sandbox Code Playgroud)
下面的代码可以解决这个问题,但我建议使用 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
}
Run Code Online (Sandbox Code Playgroud)
PS:您必须使用在函数内部声明的变量,但如果您有未使用的全局变量也没关系。拥有未使用的函数参数也是可以的。
归档时间: |
|
查看次数: |
3290 次 |
最近记录: |