定义
Buffer
是一个可变长的字节缓冲区,具备读写的方法。Buffer
的零值是一个空的缓冲区。
1
2
3
4
5
|
type Buffer struct {
buf []byte // contents are the bytes buf[off : len(buf)]
off int // read at &buf[off], write at &buf[len(buf)]
lastRead readOp // last read operation, so that Unread* can work correctly.
}
|
声明
有四种声明方法。
- 直接定义一个
Buffer
变量。
- 使用
New
返回Buffer
变量指针。
- 使用
[]byte
切片初始化。
1
|
b := bytes.NewBuffer([]byte("hello"))
|
- 使用
string
初始化。
1
|
b := bytes.NewBufferString("hello")
|
写数据
Buffer
提供了5种写数据的方法。
- 将
[]byte
切片写入尾部。
1
|
func (b *Buffer) Write(p []byte) (n int, err error)
|
- 将
string
写入尾部。
1
|
func (b *Buffer) WriteString(s string) (n int, err error)
|
- 将字符写入尾部。
1
|
func (b *Buffer) WriteByte(c byte) error
|
- 将
rune
写入尾部。
1
|
func (b *Buffer) WriteRune(r rune) (n int, err error)
|
- 将接口对象写入尾部。
1
|
func (b *Buffer) ReadFrom(r io.Reader) (n int64, err error)
|
读数据
Buffer
提供了7种读数据的方法。
- 读取
n
个字符。
1
|
func (b *Buffer) Next(n int) []byte
|
- 将数据读入
[]byte
。
1
|
func (b *Buffer) Read(p []byte) (n int, err error)
|
- 读取第一个
byte
。
1
|
func (b *Buffer) ReadByte() (byte, error)
|
- 读取第一个
UTF8
编码字符。
1
|
func (b *Buffer) ReadRune() (r rune, size int, err error)
|
- 读取分隔符前的内容,并且返回切片。
1
|
func (b *Buffer) ReadBytes(delim byte) (line []byte, err error)
|
- 读取分隔符前的内容,并且返回字符串。
1
|
func (b *Buffer) ReadString(delim byte) (line string, err error)
|
- 将内容输出到接口对象。
1
|
func (b *Buffer) WriteTo(w io.Writer) (n int64, err error)
|
其他方法
- 返回字节切片。
1
|
func (b *Buffer) Bytes() []byte
|
- 返回字节切片容量。
1
|
func (b *Buffer) Cap() int
|
- 为容量增加
n
个字节。
1
|
func (b *Buffer) Grow(n int)
|
- 返回缓冲区长度。
1
|
func (b *Buffer) Len() int
|
- 清空数据。
1
|
func (b *Buffer) Reset()
|
- 字符串化。
1
|
func (b *Buffer) String() string
|
- 丢弃前
n
个未读字节以外的数据。
1
|
func (b *Buffer) Truncate(n int)
|
- 将最后一次成功读取的字节,设为未读取状态。
1
|
func (b *Buffer) UnreadByte() error
|
- 将最后一次读取的
rune
字符,设为未读取状态。
1
|
func (b *Buffer) UnreadRune() error
|