小编kov*_*kov的帖子

来自 Go 的 cgo C 结构字段访问:下划线还是无下划线?

我遇到了在线文档与我在访问 GO 代码中的 C 结构的程序中看到的行为之间的脱节。go version说我正在使用:

go version go1.4.2 linux/amd64
Run Code Online (Sandbox Code Playgroud)

根据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: …
Run Code Online (Sandbox Code Playgroud)

struct go cgo

3
推荐指数
1
解决办法
2826
查看次数

标签 统计

cgo ×1

go ×1

struct ×1