JSON Configuration Files
JSON konfiguratsiya fayllari
Ikkita oldingi darsni birlashtiring — fayl bilan ishlash va JSON — va siz haqiqiy dasturlarda eng ko'p uchraydigan naqshlardan biriga kelasiz: JSON konfiguratsiya fayli. Dastur ishga tushganda sozlamalarni kod ichiga "qattiq yozish" o'rniga, tashqi .json fayldan o'qiydi.
func SaveConfig(path string, cfg Config) error {
data, err := json.MarshalIndent(cfg, "", " ")
if err != nil {
return err
}
return os.WriteFile(path, data, 0644)
}
func LoadConfig(path string) (Config, error) {
var cfg Config
data, err := os.ReadFile(path)
if err != nil {
return cfg, err
}
err = json.Unmarshal(data, &cfg)
return cfg, err
}json.MarshalIndent(cfg, "", " ") — json.Marshalning "chiroyli" (pretty-printed) versiyasi: har bir maydonni yangi qatorga, bo'shliqlar bilan chekinib yozadi — inson o'qiydigan konfiguratsiya fayllari uchun mos. SaveConfig va LoadConfig — Errors Are Values kursidagi "xatoni yuqoriga uzatish" andazasining namunasi: ikkalasi ham o'z ichidagi xatoni ushlab qolmasdan, chaqiruvchiga qaytaradi.
>_ Exercise
Host string (json:"host") va Port int (json:"port") maydonlariga ega Config struct'ini yozing. SaveConfig(path string, cfg Config) error funksiyasini yozing — json.MarshalIndent bilan formatlab, faylga yozadi. LoadConfig(path string) (Config, error) funksiyasini yozing — faylni o'qib, JSON'dan Configga aylantiradi.
Stuck? Reveal a hint to help you.
Key Takeaway
Key Takeaway:
Fayl bilan ishlash va JSON'ni birlashtirib, konfiguratsiyani kod tashqarisiga chiqarish mumkin — bu dasturni qayta kompilyatsiya qilmasdan sozlamalarni o'zgartirish imkonini beradi. json.MarshalIndent inson o'qiy oladigan, formatlangan JSON hosil qiladi.
NEXT UP
HTTP GET Requests
$ go run main.go
Kodingizni ishga tushiring