结构体 - ByteReader
优质
小牛编辑
138浏览
2023-12-01
NewByteReader 构造函数
- func NewByteReader(buf []byte) (reader *ByteReader)
参数是用于读取的字节切片。
Init 方法
- func (r *ByteReader) Init(buf []byte)
在使用 ByteReader
对象时,我们可以通过 NewByteReader(nil)
来创建一个空的 ByteReader
对象,后面再通过 Init
方法来初始化这个对象。也可以在通过 Init
方法来重新初始化读取的数据,以便复用 ByteReader
对象。
Next 方法
- func (r *ByteReader) Next(n int) (data []byte)
返回接下来的 n
个字节的字节切片,该切片跟 ByteReader
包含的字节切片所包含的数据是共享的,所以,如果当你读取的数据用于只读目的时,使用该方法会非常高效。
Read 方法
- func (r *ByteReader) Read(b []byte) (n int, err error)
该方法是 golang 标准库中 io.Reader
接口的实现。
ReadByte 方法
- func (r *ByteReader) ReadByte() (byte, error)
该方法是 golang 标准库中 io.ByteReader
接口的实现。
Unread 方法
- func (r *ByteReader) Unread(n int)
将读取指针向前移动 n
个字节,进行该操作之后,你可以重新读取之前读过的数据。该方法可以被安全的连续或非连续的多次调用。如果移动的字节数多于已经读取的字节数,则读取指针将移动到开始位置,而不会出错。
UnreadByte 方法
- func (r *ByteReader) UnreadByte() error
该方法将读取指针向前移动 1 个字节。该方法签名中包含 error
返回值,仅仅是为了兼容 bytes.Buffer
, bytes.Reader
, strings.Reader
,bufio.Reader
这几个结构体上的 UnreadByte
方法的签名,但是该方法的返回值永远为 nil
。所以该方法可以被安全的连续或非连续的多次调用。如果读取指针已经移动到了开始位置,调用该方法将什幺都不做,而不会出错。