如何在cgo中初始化空C.CString
您认为在CGO中初始化长度为x的C.CString的最佳方法是什么?背景:我需要一个大小合适的字符*作为C函数参数,但我认为以下代码可以改进:如何在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
// 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))