我的 Go 应用程序可以与 MySQL、Postgres 和 SQLite 一起使用。在第一次启动时,它会询问应该使用什么数据库。SQLite 仅适用于 CGo。根据是否启用,SQLite 应该显示在支持的数据库列表中。是否可以从 Go 应用程序中检测是否启用了 CGo?
1 回答
大话西游666
TA贡献1817条经验 获得超14个赞
使用构建约束来检测 CGO。将这两个文件添加到包中:
cgotrue.go:
// +build cgo
package yourPackageNameHere
const cgoEnabled = true
cgofalse.go:
// +build !cgo
package yourPackageNameHere
const cgoEnabled = false
仅编译其中一个文件。检查cgoEnabledconst 以确定 CGO 是否已启用。
另一种选择是将以下内容添加到始终编译的文件中:
var drivers []string{ "MySQL", "Postgres"}
这是一个仅限 CGO 的文件:
// +build cgo
package yourPackageNameHere
func init() {
drivers = append(drivers, "SQLite")
}
- 1 回答
- 0 关注
- 168 浏览
添加回答
举报
0/150
提交
取消