首頁 >後端開發 >Golang >如何從 Go 存取 C `const char*` 陣列?

如何從 Go 存取 C `const char*` 陣列?

Patricia Arquette
Patricia Arquette原創
2024-11-26 13:40:11410瀏覽

How to Access a C `const char*` Array from Go?

從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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
上一篇:我製作Golang庫下一篇:我製作Golang庫