数值类型
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 | 
Go 字符串和切片
在CGO生成的_cgo_export.h头文件中还会为Go语言的字符串、切片、字典、接口和管道等特有的数据类型生成对应的C语言类型:
typedef struct { const char *p; GoInt n; } GoString;
typedef void *GoMap;
typedef void *GoChan;
typedef struct { void *t; void *v; } GoInterface;
typedef struct { void *data; GoInt len; GoInt cap; } GoSlice;
 
                         
                                

