如何使用struct的指针强制转换[]字节?

时间:2017-12-29 02:04:18

标签: go

我想将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是可能的。

1 个答案:

答案 0 :(得分:3)

您可以将unsafe.Pointer转换为*myStruct,将指针传递给字节切片的第一个元素:

import "unsafe"
...
obj = (*myStruct)(unsafe.Pointer(&data[0]))

测试:https://play.golang.org/p/c7XO3dPKcLu