为什么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”。但是我想我已经使用err来声明。为什么编译器会输出此错误?
回答:
err
for
的内部正在遮盖for的err
外部,并且未被使用(for的内部)。发生这种情况的原因是,您正在使用简短的变量声明(与:=
运算符一起使用),该声明声明了一个新err
变量,该新变量遮盖了for外部声明的变量。
以上是 为什么golang编译器认为变量已声明但未使用? 的全部内容, 来源链接: utcz.com/qa/412070.html