從 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 build
或 go install
。go tool
識別特殊的 C
匯入,並自動將 cgo
用於這些檔案。