登录
首页 >  Golang >  Go问答

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

来源:stackoverflow

时间:2024-03-18 13:42:30 370浏览 收藏

Go 应用程序可以使用构建约束来检测 CGo 是否已启用。CGo 是一个允许 Go 程序与 C 代码交互的工具。如果已启用 CGo,则可以使用两个文件来检测它:“cgotrue.go”和“cgofalse.go”。这些文件使用构建约束来指定在启用或禁用 CGo 时编译哪个文件。通过检查“cgoenabled”常量,应用程序可以确定 CGo 是否可用。

问题内容

My 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 应用程序是否可以检测 CGo 是否启用?》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>