定义
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
|