golang 标准库缓冲区(bytes.Buffer)使用试验

疑问

标准库 buffer可以支持写入和读取,那么读取一段数据字符后,缓冲区内到底有没有读取后的字符?

package main

import (
    "bytes"
    "fmt"
)

func main() {

    mybuff :=  new(bytes.Buffer)
    testbytes := []byte{1,2,3,4,5,6,7,8,9,10}
    buf := make([]byte,5)
    mybuff.Write(testbytes)
    fmt.Println(" --------Before buffer read-----")
    fmt.Println("buffer lenA:",mybuff.Len())
    fmt.Printf("mybuff:%v \n",mybuff.Bytes())
    n,err := mybuff.Read(buf)
    if(err!= nil){
        fmt.Println("error: ",err)
    }

    fmt.Println(" \n \n--------After buffer read----- ")
    fmt.Println("read len:",n)
    fmt.Println("buffer lenB:",mybuff.Len())
    fmt.Printf("buf:%v \n",buf)
    fmt.Printf("mybuff:%v",mybuff.Bytes())



}

运行结果
golang 标准库缓冲区(bytes.Buffer)使用试验_第1张图片

结论

bytes.Buffer 在读取之后,数据会被取出,不再保留在原缓冲区。
在做网络字符处理时,不用担心,缓冲区保留被读取字符

未经授权,禁止转载
转载请保留https://blog.csdn.net/starelegant

你可能感兴趣的:(golang)