为了账号安全,请及时绑定邮箱和手机立即绑定

是否可以从 Go 应用程序检测是否启用了 CGo?

是否可以从 Go 应用程序检测是否启用了 CGo?

Go
慕姐4208626 2022-07-18 15:43:27
我的 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")

}


查看完整回答
反对 回复 2022-07-18
  • 1 回答
  • 0 关注
  • 168 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信