從Go 存取const char * 類型的C 陣列
問題
問題問題
討論
但是,提供的Go 程式碼無法正確存取數組,而是迭代數組中第一個字串的字元array.
import "C" import "fmt" // Convert the C array into a Go slice of pointers to C (null-terminated) strings. arraySize := 3 cStrings := (*[1 << 30]*C.char)(unsafe.Pointer(&C.myStringArray))[:arraySize:arraySize] // Iterate over the slice and convert each C string into a Go string. for _, cString := range cStrings { fmt.Println(C.GoString(cString)) }
解
更好的方法是先將C 陣列轉換為Go切片,這樣可以更方便、更安全地存取其元素。實作方法如下:NAME_OF_FIRST_THING NAME_OF_SECOND_THING NAME_OF_THIRD_THING輸出:此解決方案確保每個陣列元素都以不同的 Go 字串正確存取。
以上是如何從 Go 存取 C `const char*` 陣列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!