[Go] Viperはプロジェクト構成をロードし、パッケージ構成ファイルをバイナリにビルドします

 

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の値を他のモジュールに設定して、外部での使用を容易にすることができます。

 

上記の操作により、ビルドで生成されたバイナリファイルをどこでも実行できます。

 

リンク:https : //www.cnblogs.com/farwish/p/12733162.html

おすすめ

転載: www.cnblogs.com/farwish/p/12733162.html