go - Go 中的条件编译

标签 go cgo

我正在尝试编写一个 Go wrapper使用 CGo对于 ENet .

当我尝试在 Mac 上编译我的包装器时,该库较旧并且界面略有不同。 99% 的代码是相同的,只有少数 C 调用需要更改。

在 Go 中处理此类问题的最佳实践是什么?
有什么方法可以进行条件编译或条件导入吗?

最佳答案

将特定于平台的内容分离到一个单独的文件中,例如东西.go

现在将 stuff.go 替换为适用于不同平台的版本,例如 stuff_darwin.go(适用于 Mac)、stuff_windows.go、stuff_linux.go 等

如果一个文件有这样的后缀,go 命令将只在指定的平台上编译它。

关于go - Go 中的条件编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11143026/

相关文章:

com - 如何从 Go 进行 stdcall

c# - 使用生成的 Golang DLL 返回字符串或 *C.Char

go - 我可以在不为依赖包添加新标签的情况下更新go mod依赖包吗

go - 我如何使用 Go 的 openpgp 包?

go - GORM 是否有 Decimal 数据类型?

转到/pkg/工具/linux_amd64/链接 : running gcc failed: exit status 1/usr/bin/ld: cannot find -lgdal

go - 用 cgo 在 C 中制作一个 go 字符串

multithreading - 使用 Go 1.2 的线程 CGO

git - 去包装: How to avoid 'cannot find package' error when submitting PRs from fork?

amazon-web-services - TLS 的 AWS DocumentDB 连接问题