Avatar ·

如何将空终止字节数组(C字符串)转换为Go字符串?

大家好!我是Go新手,正在编写一个通过cgo与C代码交互的程序。在C部分,我以`*C.char`形式获取一个以空字节(`\0`)结尾的字符串。我试图将其转换为普通的Go字符串,但遇到了问题。\n\n例如,我有一个返回`*C.char`的函数:\n\n```go\n// char* get_name(void);\nimport \"C\"\n\nfunc getName() string {\n name := C.get_name()\n // 如何正确地将name转换为Go字符串?\n}\n```\n\n我尝试过使用`C.GoString(name)`,但不确定是否在所有情况下都正确。如果字节数组内部有空字节怎么办?或者如果字符串非常长?如何避免内存泄漏和panic?\n\n请告诉我将空终止字节数组转换为Go字符串的正确方法,特别是在使用cgo时。我需要一个可靠且安全的方法。\n\n<<>>\n

安全地将C字符串转换为Go字符串

\n

在Go中,处理空终止字符