golang bytes.Buffer Reset
Posted 一页天书不分说
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang bytes.Buffer Reset相关的知识,希望对你有一定的参考价值。
func t() { a := []byte{‘1‘, ‘2‘} buf := new(bytes.Buffer) buf.Write(a) b := buf.Bytes() fmt.Println(b) buf.Reset() c := []byte{‘3‘} buf.Write(c) fmt.Println(b) }
上面运行结果是
[49 50]
[51 50]
。
--> 结论:
bytes.Buffer Reset之后,如果再写入新的数据,如果数据的长度没有超过Reset之前缓冲区的长度,那么Buffer内部不会重新开辟内存,也就是说,
写入的数据会覆盖之前的数据。
在本例中,这里【之前的数据】就是那个 b , 很明显它的第一个字节已经被修改了。
--> 如果你写入的数据长度超过前面的长度,那么就不会这样了(b就不会被改写了),可以自行试验。
以上是关于golang bytes.Buffer Reset的主要内容,如果未能解决你的问题,请参考以下文章