码迷,mamicode.com
首页 > 其他好文 > 详细

golang bytes.Buffer Reset

时间:2016-09-22 01:12:20      阅读:231      评论:0      收藏:0      [点我收藏+]

标签:

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

标签:

原文地址:http://www.cnblogs.com/onebook/p/5894720.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!