将bufio.Scanner的阅读器包装在bufio.Reader中有什么好处吗?

时间:2014-12-02 05:53:52

标签: parsing go buffer

我正在使用bufio.Scanner,我不确定是否应该给它一个由bufio.Reader包裹的读者。

即,fos.File,我应该:

scanner := bufio.NewScanner(f)

scanner := bufio.NewScanner(bufio.NewReader(f))

1 个答案:

答案 0 :(得分:2)

the scan.go source看起来你不需要传递*bufio.Reader:它有自己的缓冲区,默认为bufio.Reader的缓冲区。

// NewScanner returns a new Scanner to read from r.
// The split function defaults to ScanLines.
func NewScanner(r io.Reader) *Scanner {
    return &Scanner{
        r:            r,
        split:        ScanLines,
        maxTokenSize: MaxScanTokenSize,
        buf:          make([]byte, 4096), // Plausible starting size; needn't be large.
    }
}