ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
### Go 包 本小节将向你提供将在 C 程序中使用的 Go package 的代码。 Go package 的名称必须是`main`,但其文件名可以是你想要的任何名称;在这我们将文件命名为为`useByC.go`,并分为三部分。 > Tip: 你将在*第 6 章-你可能不了解 Go package 和 Go 函数*中了解有关 Go package 的更多信息。 第一部分代码: ```Go package main import "C" import ( "fmt" ) ``` 正如我之前所说,必须将 Go 包命名为`main`。你还需要在 Go 代码中导入 C 包。 第二部分代码: ```Go //export PrintMessage func PrintMessage() { fmt.Println("A Go function!") } ``` 必须将 C 代码准备调用的 Go 函数导出。这意味着你应在导出之前放置一个以`// export`开头的注释行。在`// export`的后面你将需要输入函数的名称,因为这是 C 代码将使用的名称。 最后一部分代码: ```Go //export Multiply func Multiply(a, b int) int { return a * b } func main() { } ``` `usedByC.go`的`main()`函数不需要代码,因为它不会被导出,因此不会被 C 程序使用。此外,由于还希望导出`Multiply()`函数,因此需要写上`// export Multiply`。 之后,你需要通过执行以下命令从 Go 代码生成 C 共享库: ```shell $ go build -o usedByC.o -buildmode=c-shared usedByC.go ``` 前面的命令将生成两个名为`usedByC.h`和`usedByC.o`的文件: ```shell $ ls -l usedByC.* -rw-r--r--@ 1 mtsouk staff 204 Jan 10 09:17 usedByC.go -rw-r--r-- 1 mtsouk staff 1365 Jan 22 22:14 usedByC.h -rw-r--r-- 1 mtsouk staff 2329472 Jan 22 22:14 usedByC.o $ file usedByC.o usedByC.o: Mach-O 64-bit dynamically linked shared library x86_64 ``` 你不应对 usedByC.h 进行任何更改。