为什么golang编译器认为该变量已被声明但未被使用?

前端之家收集整理的这篇文章主要介绍了为什么golang编译器认为该变量已被声明但未被使用?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我是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)
}

编译错误是“err decland not used”.但是我认为我已经用错了.为什么编译器输出这个错误

内部的错误正在遮蔽外面的错误,它没有被使用(在里面的那个).这是因为您使用的是短变量声明(带有:=操作符),它声明了一个新的err变量,该变量会影响在该外部声明的那个.

猜你在找的Go相关文章