1. 通过`improt "C"`语句开启CGO特性
2. `/**/`中间是C代码,之后接 import "C" 如果存在空行 就会报错.could not determine kind of name for C.*
3. CGO不仅仅用于Go语言中调用C语言函数,还可以用于导出Go语言函数给C语言函数调用
示例一,开启CGO特性:
package main
//#include <stdio.h>
import "C"
func main() {
// println("hello cgo")
C.puts(C.CString("Hello, World
"))
}
示例二,调用自定义的C方法:
package main
/*
#include <stdio.h>
static void SayHello(const char* s) {
puts(s);
}
*/
import "C"
func main() {
C.SayHello(C.CString("Hello, World
"))
}
C代码与go代码放在同一个文件中,C代码注释起来,紧接着换行写 import "C"
示例三,C代码与Go代码分离:
package main
// void SayHello(const char* s); import "C" func main() { C.SayHello(C.CString("Hello, World ")) }
同目录下需要放置一个hello.c文件,内容如下:
#include <stdio.h>
void SayHello(const char* s) {
puts(s);
}