gpt4 book ai didi

go - 如何将 Go 结构转换为 C 结构?

转载 作者:IT王子 更新时间:2023-10-29 02:03:57 27 4
gpt4 key购买 nike

我想用cgo。在 C 端,我有包含 32 个字节的结构。

struct hash {
uint8_t bytes[32];
};

在 Go 尺寸上,我有非常相似的类型。

type Hash [32]bytes

我想用 Hash 类型的实例调用 C 函数 void f(struct hash)。如果可能的话,我还想避免复制该值。

简单赋值 Chash C.struct_hash := hash 不起作用:

cannot use hash (type Hash) as type C.struct_hash in assignment

最佳答案

您可以使用 unsafe包来转换数据。 Go 编译器无法再检查此处的类型,因此您需要确保 C.struct_hash 之间所有内容的大小和类型都相同。和 Hash .

Chash := *(*C.struct_hash)(unsafe.Pointer(&hash))

关于go - 如何将 Go 结构转换为 C 结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39794721/

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