分析来源: 以'\n' 为一行,读取文件内容。 流程如下:
rd := bufio.NewReader(f) // f is io.Reader interface.
for{
line, err := rd.ReadString('\n')
if err != nil || io.EOF ==err{
break
}
}
进入ReadString() :
将在rd中查找, 并将返回的[]byte 转换成 string与err 一并返回。
进入 ReadBytes():
func (b *Reader) ReadBytes(delim byte) (line []byte, err error) {
var frag []byte
var full [][]byte
for {
var e error
frag, e = b.ReadSlice(delim)
if e == nil { // got final fragment
break
}
if e != ErrBufferFull { // unexpected error
err = e
break
}
// Make a copy of the buffer.
buf := make([]byte, len(frag))