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 函数调用
go
1 | package main |
其中,C.CString() 返回的 C 字符串是在堆上新创建的并且不受 Go 的 GC 的管理,使用完后需要自行调用 C.free(),否则会造成内存泄露。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Kanri's blog!






