为什么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来声明。为什么编译器会输出此错误?

回答:

errfor

的内部正在遮盖for的err外部,并且未被使用(for的内部)。发生这种情况的原因是,您正在使用简短的变量声明(与:=运算符一起使用),该声明声明了一个新err变量,该新变量遮盖了for外部声明的变量。

以上是 为什么golang编译器认为变量已声明但未使用? 的全部内容, 来源链接: utcz.com/qa/412070.html

回到顶部