从 Go 调用 C 函数

Cgo 支持创建调用 C 代码的 Go 包。
要使用 cgo 写入导入伪包 C 的普通 Go 代码。然后,Go 代码可以引用诸如 C.int 之类的类型,或者诸如 C.Add 之类的函数。
导入 C 之前会有一个注释,该注释称为前导码,在编译包的 C 部分时用作标题。
请注意,cgo 注释和 import 语句之间不能有空行。
请注意,import "C" 不能与其他导入组合成带括号的因式导入语句。你必须编写多个 import 语句,例如:

import "C"
import "fmt"

对于其他导入,使用 factored import 语句是一种很好的方式,例如:

import "C"
import (
    "fmt"
    "math"
)

使用 cgo 的简单示例:

package main

//int Add(int a, int b){
//    return a+b;
//}
import "C"
import "fmt"

func main() {
    a := C.int(10)
    b := C.int(20)
    c := C.Add(a, b)
    fmt.Println(c) // 30
}

然后 go build,运行它,输出:

30

要建立 cgo 包,只需像往常一样使用 go buildgo installgo tool 识别特殊的 C 导入,并自动将 cgo 用于这些文件。