Help us shape the future of Go! Take the 2026 Go Developer Survey

unsafe

package
v1.2.1 Latest Latest
Warning

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

Go to latest
Published: Aug 9, 2026 License: MIT Imports: 4 Imported by: 0

README

Unsafe Binary Slices

This sub-package contains a set of typed sclices which can be useful for encoding/decoding large numerical slices faster. This is relatively unsafe and non-portable as the encoding simply copies the memory of the slice, hence disregarding byte order of the encoder/decoders. However, this lets us to avoid allocating and copying memory when encoding/decoding, making this at least 10x faster than the safe implementation.

Benchmark

BenchmarkUint64s_Safe/marshal-8                   200000              9958 ns/op            1120 B/op          4 allocs/op
BenchmarkUint64s_Safe/unmarshal-8                 100000             16036 ns/op            4224 B/op          4 allocs/op
BenchmarkUint64s_Unsafe/marshal-8                1000000              1261 ns/op            4209 B/op          2 allocs/op
BenchmarkUint64s_Unsafe/unmarshal-8              1000000              1559 ns/op            4224 B/op          4 allocs/op

Usage

This is a drop-in type, so simply use one of the types available in the package (Bools, Int32s, Uint64s ...) and Marshal or Unmarshal using the binary package.

// Marshal some numbers
v := Int32s{4, 5, 6, 1, 2, 3}
encoded, err := binary.Marshal(&v)

// Unmarshal the numbers
var o Int32s
err = binary.Unmarshal(b, &o)

Documentation

Overview

Copyright (c) Roman Atachiants and contributors. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for details.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Bools

type Bools []bool

func (*Bools) GetBinaryCodec

func (s *Bools) GetBinaryCodec() binary.Codec

type Float32s

type Float32s []float32

func (*Float32s) GetBinaryCodec

func (s *Float32s) GetBinaryCodec() binary.Codec

func (Float32s) Len

func (s Float32s) Len() int

func (Float32s) Less

func (s Float32s) Less(i, j int) bool

func (Float32s) Swap

func (s Float32s) Swap(i, j int)

type Float64s

type Float64s []float64

func (*Float64s) GetBinaryCodec

func (s *Float64s) GetBinaryCodec() binary.Codec

func (Float64s) Len

func (s Float64s) Len() int

func (Float64s) Less

func (s Float64s) Less(i, j int) bool

func (Float64s) Swap

func (s Float64s) Swap(i, j int)

type Int16s

type Int16s []int16

func (*Int16s) GetBinaryCodec

func (s *Int16s) GetBinaryCodec() binary.Codec

func (Int16s) Len

func (s Int16s) Len() int

func (Int16s) Less

func (s Int16s) Less(i, j int) bool

func (Int16s) Swap

func (s Int16s) Swap(i, j int)

type Int32s

type Int32s []int32

func (*Int32s) GetBinaryCodec

func (s *Int32s) GetBinaryCodec() binary.Codec

func (Int32s) Len

func (s Int32s) Len() int

func (Int32s) Less

func (s Int32s) Less(i, j int) bool

func (Int32s) Swap

func (s Int32s) Swap(i, j int)

type Int64s

type Int64s []int64

func (*Int64s) GetBinaryCodec

func (s *Int64s) GetBinaryCodec() binary.Codec

func (Int64s) Len

func (s Int64s) Len() int

func (Int64s) Less

func (s Int64s) Less(i, j int) bool

func (Int64s) Swap

func (s Int64s) Swap(i, j int)

type Uint16s

type Uint16s []uint16

func (*Uint16s) GetBinaryCodec

func (s *Uint16s) GetBinaryCodec() binary.Codec

func (Uint16s) Len

func (s Uint16s) Len() int

func (Uint16s) Less

func (s Uint16s) Less(i, j int) bool

func (Uint16s) Swap

func (s Uint16s) Swap(i, j int)

type Uint32s

type Uint32s []uint32

func (*Uint32s) GetBinaryCodec

func (s *Uint32s) GetBinaryCodec() binary.Codec

func (Uint32s) Len

func (s Uint32s) Len() int

func (Uint32s) Less

func (s Uint32s) Less(i, j int) bool

func (Uint32s) Swap

func (s Uint32s) Swap(i, j int)

type Uint64s

type Uint64s []uint64

func (*Uint64s) GetBinaryCodec

func (s *Uint64s) GetBinaryCodec() binary.Codec

func (Uint64s) Len

func (s Uint64s) Len() int

func (Uint64s) Less

func (s Uint64s) Less(i, j int) bool

func (Uint64s) Swap

func (s Uint64s) Swap(i, j int)

Jump to

Keyboard shortcuts

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