我遇到了在線文檔與我在訪問 GO 代碼中的 C 結構的程序中看到的行為之間的脫節。go version說我正在使用:go version go1.4.2 linux/amd64根據GO CGO 文檔:在 Go 文件中,作為 Go 中關鍵字的 C 的結構字段名稱可以通過以下劃線作為前綴來訪問:如果 x 指向具有名為“type”的字段的 C 結構,則 x._type 訪問該字段。無法在 Go 中表達的 C 結構字段,例如位字段或未對齊的數據,在 Go 結構中被省略,替換為適當的填充以到達下一個字段或結構的末尾。我遇到了這個問題,所以做了一個快速的示例程序來測試它:package main// struct rec// {// int i;// double d;// char* s;// };import "C"import "fmt"func main() { s := "hello world" r := C.struct_rec{} r.i = 9 r.d = 9.876 r.s = C.CString(s) fmt.Printf("\n\tr.i: %d\n\tr.d: %f\n\tr.s: %s\n", r.i, r.d, C.GoString(r.s))}當我使用下劃線作為文檔顯示(例如,替代r._i了r.i以上)我得到以下編譯錯誤:r._i undefined (type C.struct_rec has no field or method _i)當我不使用下劃線時,它工作正常。我用指針和非指針都試過這個。我能想到的唯一另一個想法是,也許是因為我在 GO 而不是 C 中分配了實例,是這樣嗎??謝謝你的幫助!
- 1 回答
- 0 關注
- 206 瀏覽
添加回答
舉報
0/150
提交
取消