为了账号安全,请及时绑定邮箱和手机立即绑定

为什么golang编译器认为变量声明了但没有使用?

为什么golang编译器认为变量声明了但没有使用?

Go
慕沐林林 2021-06-16 18:01:37
我是golang的新手,我写了一个程序来测试io包:func main() {    readers := []io.Reader{         strings.NewReader("from string reader"),         bytes.NewBufferString("from bytes reader"),    }    reader := io.MultiReader(readers...)    data := make([]byte, 1024)    var err error    //var n int    for err != io.EOF {        n, err := reader.Read(data)        fmt.Printf("%s\n", data[:n])    }    os.Exit(0)}编译错误是“错误声明但未使用”。但我想我在 for 语句中使用了 err。为什么编译器会输出这个错误?
查看完整描述

1 回答

?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

errfor的内部遮蔽了 for 的err外部,并且没有被使用(for 内部的那个)。发生这种情况是因为您使用了短变量声明(带有:=运算符),它声明了一个新err变量,该变量遮蔽了在 for 之外声明的变量。


查看完整回答
反对 回复 2021-06-28
  • 1 回答
  • 0 关注
  • 393 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信