0
根據Scanner.scan documents
,Scan()
將掃描儀推進到下一個標記,但這是什麼意思?我發現Scanner.Text
和Scanner.Bytes
可以是不同的,這是令人費解的。Go的bufio.Scanner中的「掃描是否將掃描儀推進到下一個標記」是什麼意思?
此代碼並不總是會導致一個錯誤,但作爲文件變大,它的作用:
func TestScanner(t *testing.T) {
path := "/tmp/test.txt"
f, err := os.Open(path)
if err != nil {
panic(fmt.Sprint("failed to open ", path))
}
defer f.Close()
scanner := bufio.NewScanner(f)
bs := make([][]byte, 0)
for scanner.Scan() {
bs = append(bs, scanner.Bytes())
}
f, err = os.Open(path)
if err != nil {
panic(fmt.Sprint("failed to open ", path))
}
defer f.Close()
scanner = bufio.NewScanner(f)
ss := make([]string, 0)
for scanner.Scan() {
ss = append(ss, scanner.Text())
}
for i, b := range bs {
if string(b) != ss[i] {
t.Errorf("expect %s, got %s", ss[i], string(b))
}
}
}