当我运行以下代码时
func writeBytes() ([]byte, error) {
var buf bytes.Buffer
dstBytes := bufio.NewWriter(&buf)
writeTonsOfBytes(dstBytes)
b := buf.Bytes()
fmt.Println(len(b))
return b, nil
}
我得到了输出
32768
这是在向我发出信号,要求我的bytes.Buffer
实例必须有一个限制,而我找不到相关的文档。
如何向bytes.Buffer
中写入无限个字节?
答案 0 :(得分:0)
没有呼叫
dstBytes.Flush()
代码中的。当前未写入buf
的所有字节都将保持未写入状态,从而导致buf
的{{1}}中写入dstBytes
的字节的记录不完整。
这也解释了为什么写入的字节数最终将以2的幂进行计数,因为新的字节以这种增量写入底层缓冲区。