Paket mencari variabel lingkungan yang diperlukan dan menggunakannya untuk menentukan pengaturan untuk aplikasi Anda. Selain itu, paket memvalidasi struktur akhir menggunakan tag validate standar.
Gunakan go get untuk menginstal paket:
go get github.com/kaatinga/settingsKemudian, impor paket ke kode Anda sendiri:
import "github.com/kaatinga/settings" Buat model pengaturan di mana Anda dapat menggunakan tag env , default dan validate . Mengumumkan variabel dan panggilan panggilan 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
} Tag env harus berisi nama variabel lingkungan terkait. Tag default berisi nilai default yang digunakan jika variabel lingkungan tidak ditemukan. Tag validate dapat berisi aturan validasi opsional yang menghantam dokumentasi paket validator.
| Jenis | Tipe nyata |
|---|---|
| rangkaian | - |
| Boolean | - |
| ~ int | - |
| ~ uint | - |
| waktu. Durasi | int64 |
Struct bersarang dapat ditambahkan melalui pointer atau tanpa pointer. Contoh:
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
}Struct bersarang yang ditambahkan melalui pointer tidak harus diinisialisasi:
var settings Model1
if err := Load ( & settings ); err != nil {
return err
}Meskipun demikian, jika Anda mau, Anda bisa melakukannya.
var settings = Model1 { Model2 : new ( Model2 )}
if err := Load ( & settings ); err != nil {
return err
}Model konfigurasi memiliki beberapa keterbatasan dalam cara diatur dan digunakan.
Jika Anda menambahkan struct kosong ke model konfigurasi Anda, Load() Mengembalikan kesalahan.
Model root harus diinisialisasi dan ditambahkan ke tanda tangan Load() melalui pointer:
err := Load ( & EnvironmentSettings )
if err != nil {
return err
}Jika tidak, fungsi mengembalikan kesalahan.