我是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)
}
编译错误是“错误声明且未使用”。但我想我已经使用了错误的声明。为什么编译器输出此错误?
答案 0 :(得分:19)
for中的err
正在影响for之外的err
,并且它没有被使用(for中的那个)。发生这种情况是因为您正在使用短变量声明(使用:=
运算符),该声明声明了一个新的err
变量,该变量会影响在for之外声明的变量。