Godoc bufio 文档
重要类型 type Scanner 1 2 3 type Scanner struct { }
type SplitFunc 1 type SplitFunc func (data []byte , atEOF bool ) (advance int , token []byte , err error )
预定义的 SplitFunc 若不指定 SplitFunc, 默认为 ScanLines.
ScanBytes 以一个 byte 为 token 1 func ScanBytes (data []byte , atEOF bool ) (advance int , token []byte , err error )
ScanLines 以一行为 token 1 func ScanLines (data []byte , atEOF bool ) (advance int , token []byte , err error )
使用示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 package mainimport ( "bufio" "fmt" "os" )func main () { scanner := bufio.NewScanner(os.Stdin) for scanner.Scan() { fmt.Println(scanner.Text()) } if err := scanner.Err(); err != nil { fmt.Fprintln(os.Stderr, "reading standard input:" , err) } }
ScanRunes 以一个 rune 为 token 1 func ScanRunes (data []byte , atEOF bool ) (advance int , token []byte , err error )
ScanWords 以一个 word 为 token 1 func ScanWords (data []byte , atEOF bool ) (advance int , token []byte , err error )
NewScanner 获得一个 Scanner 类型指针 1 func NewScanner (r io.Reader) *Scanner
Scan 推动 token 产生 1 func (s *Scanner) Scan() bool
没调用一次会向前产生一个 token, 当没有 token 时返回 false.
Split 设置 SplitFunc 1 func (s *Scanner) Split(split SplitFunc)
默认为 ScanLines
Bytes 以字节形式返回最新 token 1 func (s *Scanner) Bytes() []byte
Text 以字符串形式返回最新 token