背景:
cgo要求将golang的整数类型传递给cgo进行使用,但不能直接传递golang的int类型。 必须是int32。 数值的存储器长度与c的int长度不一致。 但是,在golang中取得的整数为int64,但有时不能直接使用int32强制变换。
将golang int64转换为golang int的方法有以下两种。 (从golang int64迁移到int32的方法相似。
变换方法1字符串变换即将golang int64变换为wei golang string,然后将string变换为int
//main.gopackagemainimport (strconv (fmt ) reflect ) ) (varid 64 int 64=99//method 13360 strint 64334 10 ) _:=strconv.atoi(strint64 ) fmt.println (id16 ) fmt.println (reflect.type of ) id16 ) )通过双指针类型转换来获得good
//main.gopackagemainimport (unsafe (fmt ) reflect ) (func main ) ) { varid 64 int 64=99//method 23360 id pointer 3360 (unter )
另外,请注意int64的范围。 id64的数值不能超过最大值或最小值。 值的范围请参照https://study golang.com/articles/6566