My Goアプリは、MySQL、Postgres、およびSQLiteで動作します。最初の起動時に、どのDBを使用するかを尋ねられます。
SQLiteはCGoでのみ機能します。有効かどうかに応じて、SQLiteはサポートされているデータベースのリストに表示されます。
CGoが有効になっているかどうかをGoアプリから検出することは可能ですか?
ビルド制約を使用してCGOを検出します。次の2つのファイルをパッケージに追加します。
cgotrue.go:
// +build cgo
package yourPackageNameHere
const cgoEnabled = true
cgofalse.go:
// +build !cgo
package yourPackageNameHere
const cgoEnabled = false
ファイルの1つだけがコンパイルされます。調べcgoEnabled
CGOの決定へのconstが有効になっています。
別のオプションは、常にコンパイルされるファイルに以下を追加することです。
var drivers []string{ "MySQL", "Postgres"}
そしてこれをCGOのみのファイルに:
// +build cgo
package yourPackageNameHere
func init() {
drivers = append(drivers, "SQLite")
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加