import "C"
func f() {
var vGo int
var vC C.int
// fails to compile with error
// cannot use &vGo (type *int) as type *C.int in argument to...
C.c_function(&vGo)
// compiles just fine:
C.c_function(&vC)
}
我使用CGO_ENABLED = 1 GOARCH = arm ...
进行编译在这种情况下,int和C.int类型的不同之处是什么? 我在哪里可以找到关于GO中C类型的其他信息?
答案 0 :(得分:2)
两种类型有什么区别?这取决于。如果您使用的是64位,则Go int将为64位,而C int将为32.如果您使用的是32位,则没有真正的区别。
我在哪里可以找到有关C类型的其他信息?查看C的文档。如评论中所述,Go中不允许隐式数字类型转换,因此需要进行转换。
答案 1 :(得分:1)