网站首页 > 基础教程 正文
bytes.buffer是一个byte类型的缓冲器,这个缓冲器里存放着都是byte
Index
type Buffer
func NewBuffer(buf []byte) *Buffer
func NewBufferString(s string) *Buffer
func (b *Buffer) Bytes() []byte
func (b *Buffer) Cap() int
func (b *Buffer) Grow(n int)
func (b *Buffer) Len() int
func (b *Buffer) Next(n int) []byte
func (b *Buffer) Read(p []byte) (n int, err error)
func (b *Buffer) ReadByte() (byte, error)
func (b *Buffer) ReadBytes(delim byte) (line []byte, err error)
func (b *Buffer) ReadFrom(r io.Reader) (n int64, err error)
func (b *Buffer) ReadRune() (r rune, size int, err error)
func (b *Buffer) ReadString(delim byte) (line string, err error)
func (b *Buffer) Reset()
func (b *Buffer) String() string
func (b *Buffer) Truncate(n int)
func (b *Buffer) UnreadByte() error
func (b *Buffer) UnreadRune() error
func (b *Buffer) Write(p []byte) (n int, err error)
func (b *Buffer) WriteByte(c byte) error
func (b *Buffer) WriteRune(r rune) (n int, err error)
func (b *Buffer) WriteString(s string) (n int, err error)
func (b *Buffer) WriteTo(w io.Writer) (n int64, err error)
声明一个Buffer的四种方法:
var b bytes.Buffer //直接定义一个Buffer变量,不用初始化,可以直接使用
b := new(bytes.Buffer) //使用New返回Buffer变量
b := bytes.NewBuffer(s []byte) //从一个[]byte切片,构造一个Buffer
b := bytes.NewBufferString(s string) //从一个string变量,构造一个Buffer
往Buffer中写入数据(缓冲器变大)
b.Write(d []byte) (n int, err error) // 将切片d写入Buffer尾部
b.WriteString(s string) (n int, err error) // 将字符串s写入Buffer尾部
b.WriteByte(c byte) error // 将字符c写入Buffer尾部,var c byte = 'a'
b.WriteRune(r rune) (n int, err error) // 将一个rune类型的数据放到缓冲器的尾部 var r rune 'a'
b.ReadForm(i io.Reader) (n int64, err error) // 将文件中的内容写入Buffer
file, _ := os.Open("1.txt")
buf := bytes.NewBufferString("Hello world")
buf.ReadFrom(file) //将text.txt内容追加到缓冲器的尾部
fmt.Println(buf.String())
从Buffer中写出到io.Writer(缓冲器变小)
b.WriteTo(w io.Writer) (n int64, err error) // 将Buffer中的内容输出到实现了io.Writer接口的可写入对象中;也可以使用fmt.Fprintf(file, buf.String())
从Buffer中读取数据到指定容器(缓冲器变小)
c := make([]byte,8)
b.Read(c) (n int, err error) //一次从Buffer中读取len(c)个byte到容器c中,每次读取新的len(c)个byte覆盖c中原来的内容,b读出后会清空缓存中的已读出的部分,Buffer中仅剩余未读取的数据,成功返回实际读取的字节数,off 向后偏移 n,buffer 没有数据返回错误 io.EOF
b.ReadByte() (byte, error) //读取第一个byte,Buffer的第1个byte被拿掉
b.ReadRune() (r rune, size int, err error) //读取第一个 UTF8 编码的字符并返回该字符和该字符的字节数,b的第1个rune被拿掉,如果buffer为空,返回错误 io.EOF,如果不是UTF8编码的字符,则消费一个字节,返回 (U+FFFD,1,nil)
b.ReadBytes(delimiter byte) (line []byte, err error) //需要一个byte作为分隔符,读取缓冲区第一个分隔符(delim)前面的内容以及分隔符并返回,缓冲区会清空读取的内容。如果没有发现分隔符,则返回读取的内容并返回错误io.EOF,
b.ReadString(delimiter byte) (line string, err error) //需要一个byte作为分隔符,读取缓冲区第一个分隔符(delim)前面的内容以及分隔符并作为字符串返回,缓冲区会清空读取的内容。如果没有发现分隔符,则返回读取的内容并返回错误 io.EOF
b.Next(n int) []byte // 返回前n个byte,原缓冲器变小,如果 buffer 不足 n 字节,则读取全部
其他
b.Bytes() []byte //返回字节切片
b.Cap() int //返回 buffer 内部字节切片的容量
b.Grow(n int) //为 buffer 内部字节切片的容量增加 n 字节
b.Len() int //返回缓冲区数据长度,等于 len(b.Bytes())
b.Reset() //将Buffer清空
b.String() string //将Buffer中未读取的数据返回成string
b.Truncate(n int) //丢弃缓冲区中除前n个未读字节以外的所有字节。如果 n 为负数或大于缓冲区长度,则引发 panic
b.UnreadByte() error //将最后一次读取操作中被成功读取的字节设为未被读取的状态,即将已读取的偏移 off 减 1
b.UnreadRune() error //将最后一次 ReadRune() 读取操作返回的 UTF8 字符 rune设为未被读取的状态,即将已读取的偏移 off 减去 字符 rune 的字节数
猜你喜欢
- 2024-11-26 golang defer、panic、recover实践
- 2024-11-26 go-fastdfs文件上传
- 2024-11-26 OpenHarmony3.0在树莓派3B上的烧录与通讯
- 2024-11-26 AOVX资产跟踪产品测试工具mPower1203如何使用python对接 (二)
- 2024-11-26 Python os.dup2() 方法是什么?os.du
- 2024-11-26 go中关于文件和json操作的知识点小结
- 2024-11-26 python3从零学习-5.8.4、mmap—内存映射文件支持
- 2024-11-26 29.Python 读取文件的六种方式
- 2024-11-26 macOS安装并设置五笔输入法
- 2024-11-26 树莓派3B上烧录OpenHarmony3.0
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)