从 Go 访问 const char * 的 C 数组
您正在尝试访问 const char 使用 cgo 从 Go 开始。具体来说,您有一个 C 字符串数组,您想要对其进行索引并将数组条目转换为 Go 字符串。
错误的方法
您当前的代码尝试使用指针算术来做到这一点:myGoString := C.GoString((*C.char) (unsafe.Pointer(uintptr(unsafe.Pointer(C.myStringArray)) + uintptr(index) * unsafe.Sizeof(C.myStringArray))))
正确的解决方案
要正确访问 C 数组,它更安全且更安全首先将其转换为 Go 切片会更方便:import "unsafe" const arraySize = 3 cStrings := (*[arraySize]*C.char)(unsafe.Pointer(&C.myStringArray))[:arraySize:arraySize] for _, cString := range cStrings { fmt.Println(C.GoString(cString)) }
示例输出
此方法可确保您从 C 数组中获取整个字符串,如以下示例输出所示:以上是如何从 Go 正确访问 `const char*` 字符串的 C 数组?的详细内容。更多信息请关注PHP中文网其他相关文章!