nazabytes

package
v0.30.10 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 27, 2023 License: MIT Imports: 4 Imported by: 44

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Bytes2StringRef added in v0.28.0

func Bytes2StringRef(b []byte) string

func Prefix added in v0.28.0

func Prefix(b []byte, length int) []byte

func String2BytesRef added in v0.28.0

func String2BytesRef(s string) []byte

func Sub added in v0.28.0

func Sub(b []byte, index int, length int) []byte

Sub

注意,内部会处理`b`大小不够,越界访问等情况

Types

type Buffer

type Buffer struct {
	// contains filtered or unexported fields
}

Buffer 先进先出可扩容流式buffer,可直接读写内部切片避免拷贝

部分Api示例:

读取方式1
  buf := Bytes()
  ... // 读取buf的内容
  Skip(n)

读取方式2
  buf := Peek(n)
  ...

读取方式3
  buf := make([]byte, n)
  nn, err := Read(buf)

读取方式4
  ... String() ...

写入方式1
  Grow(n)
  buf := WritableBytes()[:n]
  ... // 向buf中写入内容
  Flush(n)
  // 或者直接
  buf := ReserveBytes(n)
  ... // 向buf中写入内容
  Flush(n)

写入方式2
  n, err := Write(buf)

写入方式3
  ... WriteString() ...

func NewBuffer

func NewBuffer(initCap int) *Buffer

func NewBufferRefBytes

func NewBufferRefBytes(b []byte) *Buffer

NewBufferRefBytes

注意,不拷贝参数`b`的内存块,仅持有

func (*Buffer) Bytes

func (b *Buffer) Bytes() []byte

Bytes Buffer中所有未读数据,类似于PeekAll,不拷贝

func (*Buffer) Cap

func (b *Buffer) Cap() int

Cap 整个Buffer占用的空间

func (*Buffer) DebugString

func (b *Buffer) DebugString() string

func (*Buffer) Flush

func (b *Buffer) Flush(n int)

Flush 写入完成,更新写入位置

func (*Buffer) Grow

func (b *Buffer) Grow(n int)

Grow 确保Buffer中至少有`n`大小的空间可写,类似于Reserve

func (*Buffer) Len

func (b *Buffer) Len() int

Len Buffer中还没有读的数据的长度

func (*Buffer) Peek

func (b *Buffer) Peek(n int) []byte

Peek 查看指定长度的未读数据,不拷贝,类似于Next,但是不会修改读取偏移位置

func (*Buffer) Read

func (b *Buffer) Read(p []byte) (n int, err error)

Read 拷贝,`p`空间由外部申请

func (*Buffer) ReserveBytes

func (b *Buffer) ReserveBytes(n int) []byte

ReserveBytes

返回可写入`n`大小的字节切片,如果空闲空间不够,内部会进行扩容。

注意,一般在完成写入后,需要调用 Flush。

@return: 注意,返回值空间大小只会为`n`。

func (*Buffer) Reset

func (b *Buffer) Reset()

Reset 重置。注意,并不会释放内存块,可复用

func (*Buffer) ResetAndFree added in v0.30.3

func (b *Buffer) ResetAndFree()

ResetAndFree 重置并不再持有底层内存块

func (*Buffer) Skip

func (b *Buffer) Skip(n int)

Skip 将前`n`未读数据标记为已读(也即消费完成)

func (*Buffer) String

func (b *Buffer) String() string

func (*Buffer) Truncate

func (b *Buffer) Truncate(n int)

Truncate 丢弃可读数据的末尾`n`大小的数据,或者理解为取消写

func (*Buffer) WritableBytes

func (b *Buffer) WritableBytes() []byte

WritableBytes 返回当前可写入的字节切片

func (*Buffer) Write

func (b *Buffer) Write(p []byte) (n int, err error)

Write 拷贝。内部空间不够时,会自动扩容

@return n: 目前恒等于`len(p)`

@return err: 目前恒等于nil

func (*Buffer) WriteString

func (b *Buffer) WriteString(s string) (n int, err error)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL