For loop Golang文件读取器范围错误

For loop Golang文件读取器范围错误,for-loop,go,initialization,scopes,For Loop,Go,Initialization,Scopes,我试图理解两种文件读取案例之间的区别 下面的代码可以正常工作。我们逐行读取变量的文件: reader := bufio.NewReader(file) var line string for err != io.EOF { line, err = reader.ReadString('\n') log.Println(line) } 但如果我想在中为初始化(使用读卡器),范围读取器将无限地只读取代码的第一行: reader := bufio.NewReader(file)

我试图理解两种文件读取案例之间的区别

下面的代码可以正常工作。我们逐行读取变量的文件:

reader := bufio.NewReader(file)

var line string
for err != io.EOF {
    line, err = reader.ReadString('\n')
    log.Println(line)
}
但如果我想在中为初始化(使用读卡器),范围读取器将无限地只读取代码的第一行:

reader := bufio.NewReader(file)

var line string
for line, err = reader.ReadString('\n'); err != io.EOF; {
    log.Println(line)
}

请解释一下为什么会这样?谢谢

将其从初始化(Which)移动到post语句。 换成

for line, err = reader.ReadString('\n'); err != io.EOF; line, err = reader.ReadString('\n') {
    log.Println(line)
}

因为您正在初始化块(只运行一次)中执行只读。也将其移动到post语句。哇,真的,谢谢:)欢迎。发布了相同的答案。你可以结束这个问题。也许这不是最好的决定(我们有重复的代码),但我可以看到真正的区别。非常感谢。它解决了我的问题