下面是一个简单的cgo程序示例:
package main
/*
#include <stdio.h>
void sayHello(char* name) {
printf("Hello, %s!\n", name);
}
*/
import "C"
func main() {
name := C.CString("Golang")
defer C.free(unsafe.Pointer(name))
C.sayHello(name)
}
这个程序包含了一个C函数sayHello,它接受一个字符串参数,并打印出一条问候语。在Go代码中,我们使用import “C”导入了C代码,并在main函数中调用了sayHello。
需要注意的是,在调用C函数之前,我们需要将Go字符串转换为C字符串。我们可以使用C.CString来完成此操作。并且在调用完毕后,我们需要使用defer C.free释放分配的内存空间。
编译此程序时,需要使用CGO_ENABLED=1选项开启CGO支持:
$ CGO_ENABLED=1 go build
运行程序后,输出结果应该如下:
Hello, Golang!