如何在Golang中通过CGO将Go字符串复制到C char *?

时间:2016-08-18 16:41:38

标签: go cgo

我想通过CGO将Go字符串复制到char *中。

我可以这样做吗?

func copy_string(cstr *C.char) {

    str := "foo"
    C.GoString(cstr) = str

}

2 个答案:

答案 0 :(得分:10)

根据cgo documentation,您需要使用C.CString函数将Go字符串转换为C字符串:

cstr = C.CString(str)

请注意C.CString函数为您分配内存,但不会释放它,因此您有责任通过以下调用释放内存:

C.free(unsafe.Pointer(cstr))

答案 1 :(得分:0)

使用 cstr = C.CString(str) 对我不起作用,所以我选择了我在 CGO library 上直接看到的内容:C.strcpy((*C.char)(cstr), (*C.char)(C.CString(str)))