cmc*_*nty 14
在此处添加一些其他信息。在文档字符串的末尾简要提到了创建新缓冲区的快速方法:
b := new(bytes.Buffer)
Run Code Online (Sandbox Code Playgroud)
或者
b := &bytes.Buffer{}
Run Code Online (Sandbox Code Playgroud)
所述Buffer结构定义包括一个64字节的内部bootstrap最初被用于小分配字段。一旦超过默认大小,Buffer.buf就会创建一个字节切片并在内部维护。
正如@leafbebop 建议的那样,我们可以使用新切片预先初始化结构的buf字段Buffer。
b := bytes.NewBuffer(make([]byte,0,N))
Run Code Online (Sandbox Code Playgroud)
我还找到了使用该Grow()方法的另一种选择:
b := new(bytes.Buffer)
b.Grow(n)
Run Code Online (Sandbox Code Playgroud)
另外值得一提的是,内部buf切片将以cap(buf)*2 + n. 这意味着如果您已将 1MB 写入缓冲区,然后添加 1 个字节,cap()则将增加到2097153个字节。
| 归档时间: |
|
| 查看次数: |
11388 次 |
| 最近记录: |