CGO是Go语言提供的一种机制,用于在Go程序中调用C语言代码。而在C语言中,可以通过动态链接库(.so文件)的方式将一些常用的功能封装成库,供其他程序调用。因此,我们可以通过CGO调用动态库来实现Go程序与C语言库的交互。 具体实现步骤如下: 1. 编写C语言代码,并将其编译成动态链接库(.so文件)。 2. 在Go程序中使用CGO机制,通过#cgo指令将C语言代码引入到Go程序中。 3. 在Go程序中调用C语言函数,实现与动态链接库的交互。 例如,我们可以编写一个简单的C语言函数,将两个整数相加,并将结果返回。然后将其编译成动态链接库,命名为libadd.so。接着,在Go程序中使用CGO机制调用该函数,示例代码如下: ```go package main // #cgo LDFLAGS: -L. -ladd // #include "add.h" import "C" import "fmt" func main() { a, b := 1, 2 c := int(C.add(C.int(a), C.int(b))) fmt.Printf("%d + %d = %d\n", a, b, c) } ``` 其中,#cgo指令用于指定链接选项,-L.表示在当前目录下查找动态链接库,-ladd表示链接名为libadd.so的动态链接库。add.h文件中定义了add函数的声明。