gpt4 book ai didi

go - 如何使用结构指针转换 []byte?

转载 作者:IT王子 更新时间:2023-10-29 01:57:20 25 4
gpt4 key购买 nike

我想将 Go 用于低级项目并避免复制数据。

我有一个固定大小的结构:

type myStruct struct {
a uint8
b uint8
}

我想用这个字节 slice 转换一个我的结构指针,以便读取值,就好像字节 slice 是一个结构而不复制任何东西.

data := []byte{69,0}

var obj *myStruct

//something like:
obj = myStruct(data)
// or
obj = &myStruct(data)

在 C 中它将是:obj = (struct myStruct*) data;

  • 这可能吗?这样做的解决方案是什么?最佳实践?

我想避免使用 []byte 的偏移量和索引。

由于 slice 不是固定内存,我想可以通过将 []byte 转换为固定数组 byte[0:2].

最佳答案

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

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

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

关于go - 如何使用结构指针转换 []byte?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48016550/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com