我是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来声明。为什么编译器会输出此错误?
errfor 的内部正在遮盖for的err外部,并且未被使用(for的内部)。发生这种情况的原因是,您正在使用简短的变量声明(与:=运算符一起使用),该声明声明了一个新err变量,该新变量遮盖了for外部声明的变量。
err
:=