تبحث الحزمة عن متغيرات البيئة الضرورية وتستخدمها لتحديد إعدادات التطبيق الخاص بك. بالإضافة إلى ذلك ، تتحقق الحزمة من البنية النهائية باستخدام علامات validate القياسية.
استخدم go get لتثبيت الحزمة:
go get github.com/kaatinga/settingsثم ، استيراد الحزمة إلى الرمز الخاص بك:
import "github.com/kaatinga/settings" قم بإنشاء نموذج إعدادات حيث يمكنك استخدام Tags 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 صحة قاعدة التحقق الاختيارية التي تتسرب من توثيق حزمة المدقق.
| يكتب | نوع حقيقي |
|---|---|
| خيط | - |
| منطقية | - |
| ~ 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
}خلاف ذلك ، تُرجع الوظيفة خطأ.