代码如下==
s := strings.NewReader("ABCDEFGJHIJK")
fmt.Printf("pa is %d\n ", s.GetValueI()) //GetValueI() returns the value of r.i
br := bufio.NewReader(s)
fmt.Printf("papa is %d\n ", s.GetValueI())
cc, _ := br.ReadByte()
fmt.Printf("%c\n", cc)
fmt.Printf("papapa is %d\n ", s.GetValueI())
印刷品显示: pa是0 爸爸是0 一个 papapa是12
所以我们的结果...... 当bufio调用ReadByte()时为什么papapa是12? 这真让我很困惑..
答案 0 :(得分:2)
缓冲读卡器的目的是更有效地读取数据流,无论读取的读取大小是多少。
当你调用ReadByte
时,如果内部缓冲区为空,它会调用其内部fill()
方法来重新填充缓冲区,在这种情况下,它会占用整个strings.Reader
。然后从该内部缓冲区返回单个字节。