settings
[]byte type is supported
パッケージは必要な環境変数を検索し、それらを使用してアプリケーションの設定を指定します。さらに、パッケージは、標準のvalidateタグを使用して最終構造体を検証します。
使用するには、パッケージをインストールしgo get :
go get github.com/kaatinga/settings次に、パッケージを独自のコードにインポートします。
import "github.com/kaatinga/settings" タグenv 、 default 、およびvalidateを使用できる設定モデルを作成します。変数を発表し、 Load()を呼び出します。
type Settings struct {
Port string `env:"PORT" validate:"numeric"`
Database string `env:"DATABASE"`
CacheSize byte `env:"CACHE_SIZE" default:"50"`
LaunchMode string `env:"LAUNCH_MODE"`
}
var settings Settings
err := Load ( & settings )
if err != nil {
return err
} envタグには、関連する環境変数の名前を含める必要があります。 defaultタグには、環境変数が見つからなかった場合に使用されるデフォルト値が含まれています。 validateタグには、VALIDATORパッケージのドキュメントをfallowingするオプションの検証ルールが含まれる場合があります。
| タイプ | 本当のタイプ |
|---|---|
| 弦 | - |
| ブール | - |
| 〜int | - |
| 〜uint | - |
| 時間 | INT64 |
ネストされた構造体は、ポインターを介して、またはポインターなしで追加できます。例:
type Model2 struct {
CacheSize byte `env:"CACHE_SIZE"`
}
type Model3 struct {
Port string `env:"PORT validate:"numeric"`
}
type Model1 struct {
Database string `env:"DATABASE"`
Model2 * Model2
Model3 Model3
}ポインターを介して追加されたネストされた構造体は、必ずしも初期化されてはなりません。
var settings Model1
if err := Load ( & settings ); err != nil {
return err
}それにもかかわらず、あなたが望むなら、あなたはそれをすることができます。
var settings = Model1 { Model2 : new ( Model2 )}
if err := Load ( & settings ); err != nil {
return err
}構成モデルには、その配置と使用方法にいくつかの制限があります。
構成モデルに空の構造体を追加すると、 Load()エラーを返します。
ルートモデルを初期化し、ポインターを介してLoad()署名に追加する必要があります。
err := Load ( & EnvironmentSettings )
if err != nil {
return err
}それ以外の場合、関数はエラーを返します。