package main
import (
"bufio"
"fmt"
"os"
)
func main() {
filename := "go.sum"
fi, err := os.Open(filename)
if err != nil {
panic(err)
}
defer fi.Close()
buf := bufio.NewReader(fi)
for {
line, _, err := buf.ReadLine()
//if err == io.EOF { break }
if err != nil {
panic(err)
}
fmt.Println(string(line))
}
}
panic: EOF
goroutine 1 [running]: main.main() ReadLine-EOF.go:28 +0x325 exit status 2
有疑问加站长微信联系(非本文作者)

不一定只遇到EOF错误吧, 只要是错误都要检测的. 只要不是nil 就跳出循环 其中如果是EOF那就是正常结束其他的可能要报错.
如果按行读,不处理io.EOF 怎么写
上面说了吧, 遇到eof也是err, 其他的也是, 只不过eof算是个正常的结束信号. 你首先需要处理err, 然后里面判断是不是正常的结束了(虽然看上去是EOF错误)
io.EOF 算err 还是不算err ?
算啊
你预期会读到数据,结果没读到,不是error是什么……