Go标准库之bytes.buffer

简介

bytes.Buffer
A buffer is a variable-sized buffer of bytes with Read and Write methods. The zero value for Buffer is an empty buffer ready to use.
buffer是一个提供了各种读写方法的可变大小的缓冲区。缓冲区零值表示这是一个待使用的空缓冲区。

1
2
3
4
5
6
type Buffer struct {
buf []byte // contents are the bytes buf[off : len(buf)]
off int // read at &buf[off], write at &buf[len(buf)]
bootstrap [64]byte // memory to hold first slice; helps small buffers avoid allocation.
lastRead readOp // last read operation, so that Unread* can work correctly.
}

方法

创建buffer缓冲器

1
2
3
func new(bytes.Buffer)
func NewBuffer(buf []byte) *Buffer
func NewBufferString

写入

1
2
3
4
5
func (b *Buffer) Write(p []byte) (n int, err error)
func (b *Buffer) WriteString(s string) (n int, err error)
func (b *Buffer) WriteByte(c byte) error
func (b *Buffer) WriteRune(r rune) (n int, err error)
func (b *Buffer) WriteTo(w io.Writer) (n int64, err error)

读取

1
2
3
4
5
6
7
8
func (b *Buffer) Read(p []byte) (n int, err error)
func (b *Buffer) ReadByte() (c byte, err error)
func (b *Buffer) ReadRune() (r rune, size int, err error)
func (b *Buffer) ReadBytes(delim byte) (line []byte, err error)
func (b *Buffer) ReadString(delim byte) (line string, err error)
func (b *Buffer) ReadFrom(r io.Reader) (n int64, err error)
func (b *Buffer) UnreadByte() error //撤销readByte
func (b *Buffer) UnreadRune() error //撤销readRune

其他

1
2
3
4
func (b *Buffer) Len() int //未读部分的长度
func (b *Buffer) Cap() int
func (b *Buffer) Grow(n int) //Grow(n)后至少可写入n个字符
func (b *Buffer) Reset()

实现接口

1
2
3
4
5
6
7
8
9
10
11
12
13
buffer := bytes.NewBuffer([]byte{})
_ = interface{}(buffer).(io.Reader)
_ = interface{}(buffer).(io.ByteReader)
_ = interface{}(buffer).(io.RuneReader)
_ = interface{}(buffer).(io.ByteScanner)
_ = interface{}(buffer).(io.RuneScanner)
_ = interface{}(buffer).(io.WriterTo)
_ = interface{}(buffer).(io.Writer)
_ = interface{}(buffer).(io.ByteWriter)
_ = interface{}(buffer).(io.ReaderFrom)
_ = interface{}(buffer).(fmt.Stringer)

原文

https://www.kancloud.cn/digest/batu-go/153538