加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

golang 读出缓冲器(缓冲器变小)

发布时间:2020-12-16 18:06:51 所属栏目:大数据 来源:网络整理
导读:Read----func (b *Buffer) Read(p []byte) (n int,err error)给Read方法一个容器p,读完后,p就满了,缓冲器相应的减少了,返回的n为成功读的数量 如,缓冲器是一个装满5升水的杯子,这个杯子有Read方法,给Read方法一个3升的杯子 Read完后,5升杯子里有2升水
Read----func (b *Buffer) Read(p []byte) (n int,err error)给Read方法一个容器p,读完后,p就满了,缓冲器相应的减少了,返回的n为成功读的数量
如,缓冲器是一个装满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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读