mirror of
https://git.sr.ht/~eliasnaur/gio
synced 2026-07-06 01:45:36 +00:00
internal/byteslice: add specialized Uint32 for []uint32 view
Uint32 is the garbage-free and more efficient version of Slice. Signed-off-by: Elias Naur <mail@eliasnaur.com>
This commit is contained in:
@@ -21,6 +21,16 @@ func Struct(s interface{}) []byte {
|
|||||||
return res
|
return res
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Uint32 returns a byte slice view of a uint32 slice.
|
||||||
|
func Uint32(s []uint32) []byte {
|
||||||
|
n := len(s)
|
||||||
|
if n == 0 {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
blen := n * int(unsafe.Sizeof(s[0]))
|
||||||
|
return (*[1 << 30]byte)(unsafe.Pointer(&s[0]))[:blen:blen]
|
||||||
|
}
|
||||||
|
|
||||||
// Slice returns a byte slice view of a slice.
|
// Slice returns a byte slice view of a slice.
|
||||||
func Slice(s interface{}) []byte {
|
func Slice(s interface{}) []byte {
|
||||||
v := reflect.ValueOf(s)
|
v := reflect.ValueOf(s)
|
||||||
|
|||||||
Reference in New Issue
Block a user