我有一个填充C结构的C函数:
typedef struct {
char name[8];
}
我需要将数据复制到具有相同内容的Go lang结构中:
type sData struct {
Name [8]byte
}
该结构具有多种尺寸的参数:4,12,32因此,拥有一个处理超过一种尺寸的功能会很不错。
感谢
答案 0 :(得分:1)
为了使它更通用,您可以将C char数组分解为*C.char
,然后使用unsafe.Pointer
将其转换回数组。
func charToBytes(dest []byte, src *C.char) {
n := len(dest)
copy(dest, (*(*[1024]byte)(unsafe.Pointer(src)))[:n:n])
}
或者可能更容易
func charToBytes(src *C.char, sz int) []byte {
dest := make([]byte, sz)
copy(dest, (*(*[1024]byte)(unsafe.Pointer(src)))[:sz:sz])
return dest
}