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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库