Viperの従来の使用法はローカルであり、パッケージの下のグローバル変数にロードした後、他のパッケージを引き続き使用できます。
var Conf * viper.Viper func init(){ // 拡張子なしのファイル名 '.json' filenameWithoutExt:= " env.debug " Conf.SetConfigName(filenameWithoutExt) Conf.SetConfigType(" json " ) Conf.AddConfigPath(" ./ setting ")// Project dir if err if =:Conf.ReadInConfig(); err!= nil { panic(" Using config file:" + Conf.ConfigFileUsed()) } }
ファイルをバイナリにパッケージ化するには、推奨ツールは go-bindata / go-bindataです。
コマンドgo-bindata -o bindata.go setting / `を使用して、現在のディレクトリにgoファイルを生成します。このファイルには、main.goで使用できるAssert()関数があります。
次に 、Viper io を介してmain.goのAssert()によって返された[]バイトを読み取ります。コードは次のとおりです。
filename:= " setting / env.debug.json " bytesContent、err: = Asset(filename) if err!= nil { panic(" Asset()can not found setting file " ) } Conf.SetConfigType(" json " ) Conf .ReadConfig(bytes.NewBuffer(bytesContent))
Config * viper.Viperの値を他のモジュールに設定して、外部での使用を容易にすることができます。
上記の操作により、ビルドで生成されたバイナリファイルをどこでも実行できます。