go与C的高度兼容混合编程
package main
/*
#include <stdio.h>
#include <stdlib.h>
#include "haha.h"
#cgo linux CFLAGS: -I./
#cgo linux LDFLAGS: -L./ -lhaha
void c_print(char *str)
{
printf("%s\n", str);
}
void foo() {
printf("i am foo\n");
}
*/
import "C" //import "C" 必须单起一行,并且紧跟在注释行之后
import "unsafe"
func main() {
s := "Hello Cgo"
cs := C.CString(s) //将go的字符串变成c的字符串
C.c_print(cs) //调用C函数
defer C.free(unsafe.Pointer(cs)) //释放内存
C.foo()
C.haha()
}
C语言和go的结合非常兼容,不需要任何太多的数据类型转换。