【发布时间】:2014-10-09 05:48:24
【问题描述】:
我正在尝试在我的 Go 代码中实例化一个 C 结构。 该结构是这样定义的,(在我无法修改的外部库中):
typedef struct {
char field1[256];
} S1
在进行中,我这样做了:
func myfunc(mystr string){
// We need to convert mystr from string to char array
cStr := C.CString(mystr)
defer C.free(unsafe.Pointer(cStr)
// Should work now
s1 := &C.S1{field1: cStr}
// Do something with s1...
}
但它没有编译,因为:
不能在字段值中使用 cStr (type *C.char) 作为类型 [256]C.char
我试过强制 ([256]C.char)(cStr) 但它显然也不起作用。
有没有办法实现我想要做的事情?
【问题讨论】:
-
使用类似
copy(sq.fields[:], mystr)的东西。
标签: c go type-conversion cgo