github.com/code-reading/golang@v0.0.0-20220303082512-ba5bc0e589a3/coding/bufio/04-read-string.go (about)

     1  package main
     2  
     3  import (
     4  	"bufio"
     5  	"fmt"
     6  	"io"
     7  	"strings"
     8  )
     9  
    10  func main() {
    11  	s := "a\nb\nc"
    12  	reader := bufio.NewReader(strings.NewReader(s))
    13  	for {
    14  		line, err := reader.ReadString('\n')
    15  		// if err != nil {
    16  		// 	if err == io.EOF {
    17  		// 		// 处理当数据末尾没有\n的情况
    18  		// 		fmt.Printf("io.EOF, %#v\n", line)
    19  		// 		break
    20  		// 	}
    21  		// 	panic(err)
    22  		// }
    23  		// fmt.Printf("%#v\n", line)
    24  		if err == nil || err == io.EOF {
    25  			line = strings.TrimSpace(line)
    26  			if len(line) != 0 {
    27  				fmt.Println(line)
    28  			}
    29  		}
    30  	}
    31  }
    32  
    33  /*
    34  末尾没有分割符,会丢失数据
    35  "a\n"
    36  "b\n"
    37  io.EOF, "c"
    38  */