我想将Go用于低级项目并避免复制数据。
我有一个固定大小的结构:
#/bin/bash
/usr/bin/python python python_script.py
我想使用此type myStruct struct {
a uint8
b uint8
}
转换pointer of my struct
以便读取值,就好像字节切片是一个结构而不复制任何内容。
slice of bytes
在C中它将是:data := []byte{69,0}
var obj *myStruct
//something like:
obj = myStruct(data)
// or
obj = &myStruct(data)
我想使用[]字节的偏移量和索引来取消。
由于切片不是固定内存,我想将obj = (struct myStruct*) data;
转换为固定数组[]byte
是可能的。
答案 0 :(得分:3)
您可以将unsafe.Pointer
转换为*myStruct
,将指针传递给字节切片的第一个元素:
import "unsafe"
...
obj = (*myStruct)(unsafe.Pointer(&data[0]))