是否可以从 Go 应用程序检测是否启用了 CGo?
Is it possible from Go app to detect if CGo enabled?
我的 Go 应用程序可以与 MySQL、Postgres 和 SQLite 一起使用。第一次启动时,它询问应该使用什么数据库。
SQLite 仅适用于 CGo。根据是否启用,SQLite 应显示在支持的数据库列表中。
是否可以从 Go 应用程序检测是否启用了 CGo?
使用build constraints检测CGO。将这两个文件添加到包中:
cgotrue.go:
// +build cgo
package yourPackageNameHere
const cgoEnabled = true
cgofalse.go:
// +build !cgo
package yourPackageNameHere
const cgoEnabled = false
只编译了一个文件。检查 cgoEnabled
常量以确定 CGO 是否已启用。
另一种选择是将以下内容添加到始终编译的文件中:
var drivers []string{ "MySQL", "Postgres"}
并将此添加到仅 CGO 文件:
// +build cgo
package yourPackageNameHere
func init() {
drivers = append(drivers, "SQLite")
}
我的 Go 应用程序可以与 MySQL、Postgres 和 SQLite 一起使用。第一次启动时,它询问应该使用什么数据库。
SQLite 仅适用于 CGo。根据是否启用,SQLite 应显示在支持的数据库列表中。
是否可以从 Go 应用程序检测是否启用了 CGo?
使用build constraints检测CGO。将这两个文件添加到包中:
cgotrue.go:
// +build cgo
package yourPackageNameHere
const cgoEnabled = true
cgofalse.go:
// +build !cgo
package yourPackageNameHere
const cgoEnabled = false
只编译了一个文件。检查 cgoEnabled
常量以确定 CGO 是否已启用。
另一种选择是将以下内容添加到始终编译的文件中:
var drivers []string{ "MySQL", "Postgres"}
并将此添加到仅 CGO 文件:
// +build cgo
package yourPackageNameHere
func init() {
drivers = append(drivers, "SQLite")
}