go语言之byte buffer

bytes.buffer是一个缓冲byte类型的缓冲器存放着都是byte. 是一个变长的 buffer,具有 Read 和Write 方法。 Buffer 的 零值 是一个 空的 buffer,但是可以使用) 
Buffer 就像一个集装箱容器,可以存东西,取东西
var b bytes.Buffer
b1:=new(bytes.Buffer)
#创建byte buffer的两种方法
tmp:=make([]byte,10)
b.Write([]byte("hello"))
fmt.Println("before:b=",b.String())
fmt.Println("Read function test\n")
b.Read(tmp) //读byte buffer中的数据到tmp(字节数组中),一直读完为止,读完后b里面就是空数据
fmt.Println("tmp=:",string(tmp))
fmt.Println("after:b=",b.String())

b.Write([]byte("hello"))
fmt.Println("Readbyte function test\n")
ret,_:=b.ReadByte() //读byte buffer中的第一个字节,读完后b中第一个字节没有
fmt.Println("ret=%s",string(ret))
fmt.Println("after:b=",b.String())

fmt.Println("Readbytes function test\n")
b1.Write([]byte("hello"))
fmt.Println("before:b1=",b1.String())
var delim byte='l'
ret1,_:=b1.ReadBytes(delim) //一直读到分隔符的字节
fmt.Println("ret=%s",string(ret1))


fmt.Println("Reset and ReadString begin")
b1.Reset() //清空byte buffer
b1.Write([]byte("hello"))
ret2,_:=b1.ReadString(delim)
fmt.Println("ret=%s",string(ret2))

fmt.Println("Reset and WriteString begin")
b1.Reset()
b1.WriteString(string("hello")) //写入字符串
fmt.Println("after:b1=",b1.String())

执行结果

before:b= hello
Read function test

tmp=: hello
after:b=
Readbyte function test

ret=%s h
after:b= ello
Readbytes function test

before:b1= hello
ret=%s hel
Reset and ReadString begin
ret=%s hel
Reset and WriteString begin
after:b1= hello

posted @ 2022-02-19 16:38  red_leaf_412  阅读(511)  评论(0编辑  收藏  举报