将无限字节写入bytes.Buffer

时间:2018-08-10 01:10:00

标签: go

当我运行以下代码时

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中写入无限个字节?

1 个答案:

答案 0 :(得分:0)

没有呼叫

dstBytes.Flush()
代码中的

。当前未写入buf的所有字节都将保持未写入状态,从而导致buf的{​​{1}}中写入dstBytes的字节的记录不完整。

这也解释了为什么写入的字节数最终将以2的幂进行计数,因为新的字节以这种增量写入底层缓冲区。