为什么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)

}

编译错误是“错误声明但未使用”。但我想我在 for 语句中使用了 err。为什么编译器会输出这个错误?


慕沐林林
浏览 394回答 1
1回答

尚方宝剑之说

errfor的内部遮蔽了 for 的err外部,并且没有被使用(for 内部的那个)。发生这种情况是因为您使用了短变量声明(带有:=运算符),它声明了一个新err变量,该变量遮蔽了在 for 之外声明的变量。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go