在Go 中使用const char * 類型的C 陣列時,您可能會遇到索引和索引方面的困難將條目轉換為Go 字串。這個問題源自於存取數組元素時涉及的低階指標運算。
為了克服這個挑戰,更安全、更方便的方法是將 C 陣列轉換為 Go 切片。這個中間步驟簡化了轉換過程,同時也確保了準確性。
arraySize := 3 cStrings := (*[1 << 30]*C.char)(unsafe.Pointer(&C.myStringArray))[:arraySize:arraySize]
此操作實現以下目標:
一旦 C 數組轉換為切片,對其進行迭代就變得很簡單。下面是一個範例:
for _, cString := range cStrings { fmt.Println(C.GoString(cString)) }
使用 C.GoString() 將 C 陣列轉換為 Go 字串後,此迴圈將列印 C 陣列的每個元素。
NAME_OF_FIRST_THING NAME_OF_SECOND_THING NAME_OF_THIRD_THING
透過遵循此方法,您可以有效地索引const char * 類型的C 陣列中的元素並將其轉換為Go 字串,避免直接指針算術的複雜性。
以上是如何使用'cgo”安全存取'const char *”的 C 陣列並將其轉換為 Go 字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!