unsafeslice

package module
v0.0.0-...-20e1e9e Latest Latest
Warning

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

Go to latest
Published: May 2, 2020 License: MIT Imports: 3 Imported by: 0

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 = int(unsafe.Sizeof(uint64(0)))
	Uint32Size = int(unsafe.Sizeof(uint32(0)))
	Uint16Size = int(unsafe.Sizeof(uint16(0)))
	Uint8Size  = int(unsafe.Sizeof(uint8(0)))
	Int64Size  = int(unsafe.Sizeof(int64(0)))
	Int32Size  = int(unsafe.Sizeof(int32(0)))
	Int16Size  = int(unsafe.Sizeof(int16(0)))
	Int8Size   = int(unsafe.Sizeof(int8(0)))

	Float64Size = int(unsafe.Sizeof(float64(0)))
	Float32Size = int(unsafe.Sizeof(float32(0)))
	Float16Size = int(unsafe.Sizeof(float16.Float16(0)))

	BoolSize = int(unsafe.Sizeof(false))
)

Useful constants.

Variables

This section is empty.

Functions

func BoolSliceFromByteSlice

func BoolSliceFromByteSlice(b []byte) []bool

func ByteSliceFromBoolSlice

func ByteSliceFromBoolSlice(b []bool) []byte

func ByteSliceFromFloat16Slice

func ByteSliceFromFloat16Slice(b []float16.Float16) []byte

func ByteSliceFromFloat32Slice

func ByteSliceFromFloat32Slice(b []float32) []byte

func ByteSliceFromFloat64Slice

func ByteSliceFromFloat64Slice(b []float64) []byte

func ByteSliceFromInt8Slice

func ByteSliceFromInt8Slice(b []int8) []byte

func ByteSliceFromInt16Slice

func ByteSliceFromInt16Slice(b []int16) []byte

func ByteSliceFromInt32Slice

func ByteSliceFromInt32Slice(b []int32) []byte

func ByteSliceFromInt64Slice

func ByteSliceFromInt64Slice(b []int64) []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 ByteSliceFromUint8Slice

func ByteSliceFromUint8Slice(b []uint8) []byte

func ByteSliceFromUint16Slice

func ByteSliceFromUint16Slice(b []uint16) []byte

func ByteSliceFromUint32Slice

func ByteSliceFromUint32Slice(b []uint32) []byte

func ByteSliceFromUint64Slice

func ByteSliceFromUint64Slice(b []uint64) []byte

func Float16SliceFromByteSlice

func Float16SliceFromByteSlice(b []byte) []float16.Float16

func Float32SliceFromByteSlice

func Float32SliceFromByteSlice(b []byte) []float32

func Float64SliceFromByteSlice

func Float64SliceFromByteSlice(b []byte) []float64

func Int8SliceFromByteSlice

func Int8SliceFromByteSlice(b []byte) []int8

func Int16SliceFromByteSlice

func Int16SliceFromByteSlice(b []byte) []int16

func Int32SliceFromByteSlice

func Int32SliceFromByteSlice(b []byte) []int32

func Int64SliceFromByteSlice

func Int64SliceFromByteSlice(b []byte) []int64

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 Uint8SliceFromByteSlice

func Uint8SliceFromByteSlice(b []byte) []uint8

func Uint16SliceFromByteSlice

func Uint16SliceFromByteSlice(b []byte) []uint16

func Uint32SliceFromByteSlice

func Uint32SliceFromByteSlice(b []byte) []uint32

func Uint64SliceFromByteSlice

func Uint64SliceFromByteSlice(b []byte) []uint64

Types

This section is empty.

Jump to

Keyboard shortcuts

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