GoDasturchi
JSON Configuration Files

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.

example.go
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.

Hints (0/3)

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

OUTPUT

$ go run main.go
Kodingizni ishga tushiring

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.

example.go
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.

Hints (0/3)

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