unsafeslice

package module
v0.3.0 Latest Latest
Warning

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

Go to latest
Published: Dec 2, 2023 License: MIT Imports: 2 Imported by: 19

README

Unsafe zero-copy slice casts for Go

Convenience functions for casting raw bytes to typed arrays without copying.

Usage:

b := []byte{1, 2, 3, 4}
v := unsafeslice.Uint32SliceFromByteSlice(b)

Documentation

Overview

Package unsafeslice contains functions for zero-copy casting between typed slices and byte slices.

Index

Constants

View Source
const (
	Uint64Size = 8
	Uint32Size = 4
	Uint16Size = 2
	Uint8Size  = 1

	Float32Size = 4
	Float64Size = 8
)

Useful constants.

Variables

This section is empty.

Functions

func ByteSliceFromFloat32Slice added in v0.3.0

func ByteSliceFromFloat32Slice(b []float32) []byte

func ByteSliceFromFloat64Slice added in v0.3.0

func ByteSliceFromFloat64Slice(b []float64) []byte

func ByteSliceFromInt16Slice

func ByteSliceFromInt16Slice(b []int16) []byte

func ByteSliceFromInt32Slice

func ByteSliceFromInt32Slice(b []int32) []byte

func ByteSliceFromInt64Slice

func ByteSliceFromInt64Slice(b []int64) []byte

func ByteSliceFromInt8Slice

func ByteSliceFromInt8Slice(b []int8) []byte

func ByteSliceFromString

func ByteSliceFromString(s string) []byte

func ByteSliceFromStructSlice

func ByteSliceFromStructSlice(s interface{}) []byte

ByteSliceFromStructSlice does what you would expect.

Note that this is slower than the scalar primitives above as it uses reflection.

func ByteSliceFromUint16Slice

func ByteSliceFromUint16Slice(b []uint16) []byte

func ByteSliceFromUint32Slice

func ByteSliceFromUint32Slice(b []uint32) []byte

func ByteSliceFromUint64Slice

func ByteSliceFromUint64Slice(b []uint64) []byte

func ByteSliceFromUint8Slice added in v0.2.0

func ByteSliceFromUint8Slice(b []uint8) []byte

func Float32SliceFromByteSlice added in v0.3.0

func Float32SliceFromByteSlice(b []byte) []float32

func Float64SliceFromByteSlice added in v0.3.0

func Float64SliceFromByteSlice(b []byte) []float64

func Int16SliceFromByteSlice

func Int16SliceFromByteSlice(b []byte) []int16

func Int32SliceFromByteSlice

func Int32SliceFromByteSlice(b []byte) []int32

func Int64SliceFromByteSlice

func Int64SliceFromByteSlice(b []byte) []int64

func Int8SliceFromByteSlice

func Int8SliceFromByteSlice(b []byte) []int8

func StringFromByteSlice

func StringFromByteSlice(b []byte) string

func StructSliceFromByteSlice

func StructSliceFromByteSlice(b []byte, out interface{})

Create a slice of structs from a slice of bytes.

var v []Struct
StructSliceFromByteSlice(bytes, &v)

Elements in the byte array must be padded correctly. See unsafe.AlignOf, et al.

Note that this is slower than the scalar primitives above as it uses reflection.

func Uint16SliceFromByteSlice

func Uint16SliceFromByteSlice(b []byte) []uint16

func Uint32SliceFromByteSlice

func Uint32SliceFromByteSlice(b []byte) []uint32

func Uint64SliceFromByteSlice

func Uint64SliceFromByteSlice(b []byte) []uint64

func Uint8SliceFromByteSlice added in v0.2.0

func Uint8SliceFromByteSlice(b []byte) []uint8

Types

This section is empty.

Jump to

Keyboard shortcuts

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