package module
v1.0.0 Latest Latest

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

Go to latest
Published: Jun 18, 2020 License: MIT Imports: 4 Imported by: 0


padded GoDoc Go Report Card

A padded byte slice and pool allocator. See godoc for details.



Package padded provides a padded byte slice and pool allocator.



This section is empty.


This section is empty.


This section is empty.


type Pool

type Pool struct {
	// contains filtered or unexported fields

Pool implements a memory pool for padded byte slices. Both the capacity and padding are reclaimed when a slice is freed.

func (*Pool) Free

func (p *Pool) Free(s Slice)

Free returns a Slice to p for future reallocation.

func (*Pool) Make

func (p *Pool) Make(len, cap, pad int) Slice

Make allocates (or reallocates) a Slice for the len, cap, and pad.

type Slice

type Slice []byte

Slice is a padded byte slice. The padding is a scratch space allocated in front of byte slice and behaves roughly the same as the capacity. The len & cap built-in funcs work the same for Slice as for []byte, but append does not. Use the Append method instead.

Prepending elements to the slice fills in the padding, just as appending elements to the slice fills in the capacity. The elements must be naturally aligned to fill in the scratch padding, otherwise an append is performed. The word size on an amd64 machine is 8 bytes, so element bytes should be prepended in multiples of 8.

func Make

func Make(len, cap, pad int) Slice

Make allocates and initializes a padded byte slice. Unlike cap, the pad value is only the size of the scratch space in front of the slice. (The scratch space in back is cap - len.)

The allocated scratch space for padding may be >= pad.

func (Slice) Append

func (s Slice) Append(elems ...byte) Slice

Append appends elements to the end of s. The behavior of Append is the same as the built-in append function.

func (Slice) Pad

func (s Slice) Pad() int

Pad returns the length of the remaining bytes of padding.

func (Slice) Prepend

func (s Slice) Prepend(elems ...byte) Slice

Prepend concatenates elems onto the beginning of s.

Jump to

Keyboard shortcuts

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