แพ็คเกจค้นหาตัวแปรสภาพแวดล้อมที่จำเป็นและใช้เพื่อระบุการตั้งค่าสำหรับแอปพลิเคชันของคุณ นอกจากนี้แพ็คเกจยังตรวจสอบโครงสร้างสุดท้ายโดยใช้แท็ก 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
| พิมพ์ | ประเภทจริง |
|---|---|
| สาย | - |
| บูลีน | - |
| ~ 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
}มิฉะนั้นฟังก์ชั่นจะส่งคืนข้อผิดพลาด