CGO 类型转换
基本数值类型
Go
的基本数值类型内存模型和C
一样,传递数值类型时可以直接将Go
的基本数值类型转换成对应的CGO
类型然后传递给C
函数调用。Go
和C
的基本数值类型转换对照表如下:C语言类型 CGO类型 Go语言类型 char C.char byte singed char C.schar int8 unsigned char C.uchar uint8 short C.short int16 unsigned short C.ushort uint16 int C.int int32 unsigned int C.uint uint32 long C.long int32 unsigned long C.ulong uint32 long long int C.longlong int64 unsigned long long int C.ulonglong uint64 float C.float float32 double C.double float64 size_t C.size_t uint
字符串
使用 "C"
提供的 C.CString()
将 Go
的字符串转换成 C
char * 然后传递给 C
函数调用
1 | package main |
其中,C.CString()
返回的 C
字符串是在堆上新创建的并且不受 Go 的 GC 的管理,使用完后需要自行调用 C.free()
,否则会造成内存泄露。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Kanri's blog!