- 作为一门直接传承于C的语言,Go当然应该将与C语言的交互作为首要任务之一。Go确实也提供了这一功能,称为Cgo。
- 由于cgo需要gcc支持,所以需要配置gcc环境,如果是linux下一般可以跳过该步骤,win下则需要自己安装了,这里我们使用MinGW
- 由于我是64位,这里下载64位的POSIX版本。具体的安装过程就不费话了,直接解压即可。安装完成后需要配置环境变量${home}/bin
- https://sourceforge.net/projects/mingw-w64/files/Toolchains targetting Win64/Personal Builds/mingw-builds/4.8.2/threads-posix/seh/
package main
/*
#include <stdio.h>
void hello() {
printf("Hello, Cgo! -- From C world.\n");
}
*/
import "C"
func main() {
C.hello() //Hello, Cgo! -- From C world.
}
- 这个import语句其实就是一个信号,告诉Cgo它应该开始工作了。
- 就是对应这条import语句之前的块注释中的C源代码自动生成包装性质的Go代码。
- import语句前紧跟的注释了。这个注释的内容是有意义的,而不是传统意义上的注释作用。
- 这个例子里用的是一个块注释,实际上用行注释也是没问题的,只要是紧贴在import语句之前即可。