[TOC] # 原理 ![](https://box.kancloud.cn/243c313310644590835e275cbfcd451b_686x444.png) # bufio按行读取 ~~~ func ReadFile(path string) { //打开文件,新建文件 f, err := os.Open(path) if err != nil { fmt.Println("err = ", err) return } //使用完毕,需要关闭文件 defer f.Close() //新建一个缓冲区,把内容放在缓冲区 r := bufio.NewReader(f) for { //遇到'\n'结束读取 buf, err := r.ReadBytes('\n') if err != nil { if err == io.EOF { //文件已经结束 break } fmt.Println(err) } fmt.Println(string(buf)) } } func main() { path := "./demo.txt" ReadFile(path) } ~~~