Godoc bytes 文档
type Buffer
一个标记类型的结构体:
1 2 3
| type Buffer struct { }
|
NewBuffer 创建并用 []byte 初始化一个 buffer
1
| func NewBuffer(buf []byte) *Buffer
|
buf
为提供的初始值. 之后应不再调用 buf
这个变量.
一般也常直接类型声明来创建:
NewBufferString 创建并用 string 初始化一个 buffer
1
| func NewBufferString(s string) *Buffer
|
Available 返回 buffer 中未被使用的 bytes 数
1
| func (b *Buffer) Available() int
|
Cap 返回分配给 buffer 的总大小
1
| func (b *Buffer) Cap() int
|
Grow 增大 buffer 的 Cap
1
| func (b *Buffer) Grow(n int)
|
增大 n bytes.
Len 返回 buffer 中可读部分的长度
1
| func (b *Buffer) Len() int
|
如:
1 2 3 4 5 6 7 8 9 10 11 12 13
| package main
import ( "bytes" "fmt" )
func main() { var b bytes.Buffer b.Grow(64) b.Write([]byte("abcde")) fmt.Printf("%d", b.Len()) }
|
结果为 5.
Next 返回可读的 n bytes, 指针会向前移动
返回的 slice 尽在下一次调用为 read
或 write
时有效:
1
| func (b *Buffer) Next(n int) []byte
|
如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| package main
import ( "bytes" "fmt" )
func main() { var b bytes.Buffer b.Grow(64) b.Write([]byte("abcde")) fmt.Printf("%s\n", b.Next(2)) fmt.Printf("%s\n", b.Next(2)) fmt.Printf("%s", b.Next(2)) }
|
输出为:
Read 从 buffer 中读取内容到变量中
1
| func (b *Buffer) Read(p []byte) (n int, err error)
|
同时被读出的内容从 buffer 中移除.
ReadByte 读出的内容以 []byte 形式返回
1
| func (b *Buffer) ReadByte() (byte, error)
|
ReadFrom 读取内容附加到 buffer 后
1
| func (b *Buffer) ReadFrom(r io.Reader) (n int64, err error)
|
ReadRune 读出一个 UTF-8 字符
1
| func (b *Buffer) ReadRune() (r rune, size int, err error)
|
ReadString 读取直到分隔符的字符串
返回的字符串包含分隔符:
1
| func (b *Buffer) ReadString(delim byte) (line string, err error)
|
Reset 清空 buffer
1
| func (b *Buffer) Reset()
|
但会保留 storage.
String 将剩下的未被读取的部分以字符串形式返回
1
| func (b *Buffer) String() string
|
Truncate 去除前 n 个 bytes 以外的内容
会保留原来的 storage:
1
| func (b *Buffer) Truncate(n int)
|
UnreadByte 恢复上一个读取的 byte, 即指针回退
1
| func (b *Buffer) UnreadByte() error
|
UnreadRune 恢复上一个读取的 Rune, 指针回退
1
| func (b *Buffer) UnreadRune() error
|
Write 向 buffer 写入内容
1
| func (b *Buffer) Write(p []byte) (n int, err error)
|