Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在cgo中初始化空C.CString_Go_Cgo - Fatal编程技术网

如何在cgo中初始化空C.CString

如何在cgo中初始化空C.CString,go,cgo,Go,Cgo,您认为在CGO中初始化长度为x的C.CString的最佳方法是什么?背景:我需要一个大小合适的字符*作为C函数参数,但我认为以下代码可以改进: // length = 6 var buffer [6]byte name := C.CString(string(buffer[:6])) defer C.free(unsafe.Pointer(name)) 或 如果不需要转换字符串,只需按需要的大小进行malloc: s := C.malloc(6) defer C.free(unsafe.Poi

您认为在CGO中初始化长度为x的C.CString的最佳方法是什么?背景:我需要一个大小合适的字符*作为C函数参数,但我认为以下代码可以改进:

// length = 6
var buffer [6]byte
name := C.CString(string(buffer[:6]))
defer C.free(unsafe.Pointer(name))


如果不需要转换字符串,只需按需要的大小进行malloc:

s := C.malloc(6)
defer C.free(unsafe.Pointer(s))

这实际上是有道理的,但最后如何将其转换回go字符串呢is@netsplit:是,如果要将字节复制回Go字符串,请将指针转换为*C.char。
s := C.malloc(6)
defer C.free(unsafe.Pointer(s))