buff := bytes.NewBuffer(somebytes)
怎样写在上面buff
?目前,我正在创建一个新的缓冲区。这是正确的方法吗?
newBuff := bytes.NewBuffer(otherbytes)
newBuff.ReadFrom(buff)
bytes.NewBuffer()
返回*Buffer
。*Buffer
实现io.Writer
(和io.Reader
),因此您可以通过调用其Write()
或WriteString()
方法来简单地对其进行写入。
例:
somebytes := []byte("abc")
buff := bytes.NewBuffer(somebytes)
buff.Write([]byte("def"))
fmt.Println(buff)
预期的输出(在Go Playground上尝试):
abcdef
如果Buffer
要从空缓冲区开始,则可以简单地创建一个空结构(并获取其地址):
buff := &bytes.Buffer{}
如果要“覆盖”缓冲区的当前内容,则可以使用Buffer.Reset()
方法或等效Buffer.Truncate(0)
调用。
请注意,重置或截断缓冲区将丢弃内容(或在情况下仅丢弃一部分内容Truncate()
),但是在后台分配的缓冲区(字节片)将保留并重用。
注意:
您真正想做的事情是不可能直接实现的:想象一下,如果您想在现有内容之前插入一些数据,那么每次您在其前面写入/插入某些内容时,都必须转移现有内容。这不是很有效。
而是在内创建您的身体Buffer
。完成后,您将知道标题是什么。在another中创建头,Buffer
完成后,将主体(从第一个Buffer
)复制(写入)到已经包含头的第二个主体中。
或者,如果您不需要存储整个数据,则无需Buffer
为标题创建第二个。主体准备好后,将标题写入输出,然后从中写入主体Buffer
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句