如,缓冲器是一个装满5升水的杯子,这个杯子有Read方法,给Read方法一个3升的杯子
Read完后,5升杯子里有2升水,3升的杯子满了,返回的n为3在一次Read时,5升杯子里有0升水,3升的杯子还是满的,但其中有2升的水被新倒入的水替代了,返回的n为2
package main import( "fmt" "bytes" ) func main() { s1:=[]byte("hello") //申明一个slice为s1 buff:=bytes.NewBuffer(s1) //new一个缓冲器buff,里面存着hello这5个byte s2:=[]byte(" world") //申明另一个slice为s2 buff.Write(s2) //把s2写入添加到buff缓冲器内 fmt.Println(buff.String()) //使用缓冲器的String方法转成字符串,并打印:"hello world" s3:=make([]byte,3) //申明一个空的slice为s3,容量为3 buff.Read(s3) //把buff的内容读入到s3内,因为s3的容量为3,所以只读了3个过来 fmt.Println(buff.String()) //buff的前3个字符被读走了,所以buff变成:"lo world" fmt.Println(string(s3)) //空的s3被写入3个字符,所以为"hel" buff.Read(s3) //把buff的内容读入到s3内,因为s3的容量为3,所以只读了3个过来,原来s3的内容被覆盖了 fmt.Println(buff.String()) //buff的前3个字符又被读走了,所以buff变成:"world" fmt.Println(string(s3)) //原来的s3被从"hel"变成"lo ",因为"hel"被覆盖了 }https://my.oschina.net/u/943306/blog/127981 原文链接:https://www.f2er.com/go/188057.html