gpt4 book ai didi

go - 如何在 Go 中初始化大小为 N 的空 bytes.Buffer?

转载 作者:IT王子 更新时间:2023-10-29 01:57:18 26 4
gpt4 key购买 nike

使用 bytes.NewBuffer() 在 Go 中创建大小为 n 的空缓冲区的最简单方法是什么? ?

最佳答案

在这里添加一些额外的信息。文档字符串末尾简要提到了创建新缓冲区的快速方法:

b := new(bytes.Buffer)

b := &bytes.Buffer{}

Buffer 结构定义包含一个 64 字节的内部 bootstrap 字段,最初用于小分配。一旦超过默认大小,就会创建一个字节 slice Buffer.buf 并在内部维护。

正如@leafbebop 所建议的,我们可以使用新 slice 预初始化 Buffer 结构的 buf 字段。

b := bytes.NewBuffer(make([]byte,0,N))

我还找到了另一个使用 Grow() 方法的选项:

b := new(bytes.Buffer)
b.Grow(n)

同样有趣的是,内部 buf slice 将以 cap(buf)*2 + n 的速率增长。这意味着如果您将 1MB 写入缓冲区然后添加 1 个字节,您的 cap() 将增加到 2097153字节。

关于go - 如何在 Go 中初始化大小为 N 的空 bytes.Buffer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48335214/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com