• ByteReader
    • NewByteReader 构造函数
    • Init 方法
    • Next 方法
    • Read 方法
    • ReadByte 方法
    • Unread 方法
    • UnreadByte 方法

    ByteReader

    NewByteReader 构造函数

    1. func NewByteReader(buf []byte) (reader *ByteReader)

    参数是用于读取的字节切片。

    Init 方法

    1. func (r *ByteReader) Init(buf []byte)

    在使用 ByteReader 对象时,我们可以通过 NewByteReader(nil) 来创建一个空的 ByteReader 对象,后面再通过 Init 方法来初始化这个对象。也可以在通过 Init 方法来重新初始化读取的数据,以便复用 ByteReader 对象。

    Next 方法

    1. func (r *ByteReader) Next(n int) (data []byte)

    返回接下来的 n 个字节的字节切片,该切片跟 ByteReader 包含的字节切片所包含的数据是共享的,所以,如果当你读取的数据用于只读目的时,使用该方法会非常高效。

    Read 方法

    1. func (r *ByteReader) Read(b []byte) (n int, err error)

    该方法是 golang 标准库中 io.Reader 接口的实现。

    ReadByte 方法

    1. func (r *ByteReader) ReadByte() (byte, error)

    该方法是 golang 标准库中 io.ByteReader 接口的实现。

    Unread 方法

    1. func (r *ByteReader) Unread(n int)

    将读取指针向前移动 n 个字节,进行该操作之后,你可以重新读取之前读过的数据。该方法可以被安全的连续或非连续的多次调用。如果移动的字节数多于已经读取的字节数,则读取指针将移动到开始位置,而不会出错。

    UnreadByte 方法

    1. func (r *ByteReader) UnreadByte() error

    该方法将读取指针向前移动 1 个字节。该方法签名中包含 error 返回值,仅仅是为了兼容 bytes.Buffer, bytes.Reader, strings.Readerbufio.Reader 这几个结构体上的 UnreadByte 方法的签名,但是该方法的返回值永远为 nil。所以该方法可以被安全的连续或非连续的多次调用。如果读取指针已经移动到了开始位置,调用该方法将什么都不做,而不会出错。