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 */