来自 Go语言高级编程(Advanced Go Programming)

数值类型
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语言类型:

  1. typedef struct { const char *p; GoInt n; } GoString;
  2. typedef void *GoMap;
  3. typedef void *GoChan;
  4. typedef struct { void *t; void *v; } GoInterface;
  5. typedef struct { void *data; GoInt len; GoInt cap; } GoSlice;