亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

來自 Go 的 cgo C 結構字段訪問:下劃線還是無下劃線?

來自 Go 的 cgo C 結構字段訪問:下劃線還是無下劃線?

Go
收到一只叮咚 2021-10-18 16:18:24
我遇到了在線文檔與我在訪問 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 回答

?
尚方寶劍之說

TA貢獻1788條經驗 獲得超4個贊

答案就在您在問題中的引用中:

在轉到文件,C的結構字段名關鍵字,在Go可以通過用下劃線前綴來訪問(...)

id, ands不是 Go 中的關鍵字。


查看完整回答
反對 回復 2021-10-18
  • 1 回答
  • 0 關注
  • 206 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號