Go Academy · Ders

Yapılandırma Dosyalarını Okuma

YAML, JSON ve TOML yükleyin

1. ders / 413 adım

Yapılandırma Dosyalarını Okuma, CoddyKit'te ücretsiz bir Go Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Go Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Go Academy kursu toplamda 4 dersten oluşur.

Yapılandırma Kodun Dışında Yaşar

Bağlantı noktaları, ana bilgisayar adları ve zaman aşımları gibi değerleri Go programınıza sabit olarak yazmak kırılgandır. Viper, Go için fiilî standart yapılandırma kitaplığıdır: ayarları dosyalardan, ortam değişkenlerinden, bayraklardan ve uzak depolardan okur.

Bu derste yapılandırmayı diskteki bir dosyadan yüklersiniz.

Viper Hangi Biçimleri Okur

Viper, kullanıma hazır olarak birçok biçimi destekler:

  • YAML (.yaml / .yml)
  • JSON (.json)
  • TOML (.toml)
  • HCL, INI ve Java özellik dosyaları

Biçimi SetConfigType ile seçersiniz veya Viper bunu dosya uzantısından çıkarır.

Viper'ı Kurma ve İçe Aktarma

Viper'ı modülünüze ekleyip içe aktarın:

  • go get github.com/spf13/viper
  • import "github.com/spf13/viper"

Viper harici bir bağımlılık olduğundan, onu içe aktaran kod parçacıkları bu ders oynatıcısında çalıştırılamaz. Mümkün olan yerlerde davranışı standart kitaplıkla benzetiriz.

import "github.com/spf13/viper"

Viper'a Nereye Bakacağını Söyleme

Okumadan önce dosya adını, türünü ve arama yollarını yapılandırırsınız:

  • viper.SetConfigName("config") temel adı (uzantı olmadan) ayarlar
  • viper.SetConfigType("yaml") biçimi ayarlar
  • viper.AddConfigPath(".") aranacak dizinlere bir dizin ekler
viper.SetConfigName("config")
viper.SetConfigType("yaml")
viper.AddConfigPath(".")
viper.AddConfigPath("/etc/myapp")

Dosyayı Okuma

Dosyayı yüklemek için viper.ReadInConfig() çağrısını yapın. Bu çağrı, denetlemeniz gereken bir hata döndürür:

  • Eksik bir dosya ConfigFileNotFoundError döndürür
  • Biçimi bozuk bir dosya ayrıştırma hatası döndürür
if err := viper.ReadInConfig(); err != nil {
    log.Fatalf("failed to read config: %v", err)
}

Örnek YAML Yapılandırması

Şöyle bir config.yaml olduğunu düşünün. Viper, iç içe anahtarları noktaları kullanarak düzleştirir; bu nedenle bağlantı noktası server.port olur.

server:
  port: 8080
  host: "localhost"
debug: true

Türü Belirli Değerleri Alma

Viper, elle dönüştürme yapmamanız için türe özgü alıcı işlevler sunar:

  • viper.GetInt("server.port")
  • viper.GetString("server.host")
  • viper.GetBool("debug")
port := viper.GetInt("server.port")
host := viper.GetString("server.host")
debug := viper.GetBool("debug")
fmt.Println(host, port, debug)

JSON da Aynı Şekilde Çalışır

JSON'a geçmek yalnızca dosya içeriğini ve yapılandırma türünü değiştirir. Aynı anahtar yolları ve alıcı işlevler geçerlidir. Viper'ın popüler olmasının nedeni bu taşınabilirliktir: kodunuz, operasyon ekibinin hangi biçimi seçtiğini önemsemez.

{
  "server": { "port": 8080, "host": "localhost" },
  "debug": true
}

TOML de Desteklenir

TOML, Go ekosisteminde yaygındır (birçok komut satırı aracı bunu kullanır). Aynı iç içe anahtarlar noktalı yollara eşlenir.

[server]
port = 8080
host = "localhost"

debug = true

Standart Kitaplıkla JSON Ayrıştırma

Bu fikrin gerçek bir örnekte nasıl çalıştığını görmek için, burada Viper olmadan yalnızca encoding/json kullanarak JSON yapılandırmasını bir eşlemeye ayrıştıran yalın Go kodu yer alıyor (Viper da perde arkasında genel bir eşleme üzerinde çalışır).

package main

import (
    "encoding/json"
    "fmt"
)

func main() {
    raw := "{\"port\":8080,\"host\":\"localhost\"}"
    var c map[string]any
    if err := json.Unmarshal([]byte(raw), &c); err != nil {
        panic(err)
    }
    fmt.Printf("%v:%v\n", c["host"], c["port"])
}

Çalıştırılabilir: Bir Eşlemeye Okuma

Bu kendi kendine yeten program, JSON yapılandırmasını genel bir eşlemeye ayrıştırır ve değerleri yazdırır; Viper'ın JSON için perde arkasında yaptığı işlemi yansıtır.

package main

import (
    "encoding/json"
    "fmt"
)

func main() {
    raw := "{\"port\":8080,\"host\":\"localhost\"}"
    var m map[string]any
    json.Unmarshal([]byte(raw), &m)
    fmt.Println("host:", m["host"])
    fmt.Println("port:", m["port"])
}

Hızlı Kontrol

Viper ile yapılandırma dosyalarını okuma konusundaki anlayışınızı sınayın.

Özet

Viper'ın yapılandırma dosyalarını nasıl okuduğunu öğrendiniz:

  • YAML, JSON ve TOML biçimlerini şeffaf biçimde destekler
  • SetConfigName, SetConfigType ve AddConfigPath ile yapılandırılır
  • ReadInConfig() dosyayı yükler ve bir hata döndürür
  • GetInt ve GetString gibi türe özgü alıcılar, değerleri noktalı anahtara göre okur

Sırada: ortam değişkenleriyle yapılandırmayı geçersiz kılma.

Başlamak ücretsiz

Yapay zeka eğitmeniyle Go öğren — ücretsiz

Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.

Kurslar
51
Dersler
203

Sıkça Sorulan Sorular

“Yapılandırma Dosyalarını Okuma” dersi ücretsiz mi?

Evet — “Yapılandırma Dosyalarını Okuma” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Go Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Go Academy kursu toplamda 4 dersten oluşur.

“Yapılandırma Dosyalarını Okuma” dersinde ne öğreneceğim?

YAML, JSON ve TOML yükleyin Go Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Go Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Go Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“Yapılandırma Dosyalarını Okuma” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Go Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Go Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Yapılandırma Dosyalarını Okuma
  2. Ortam Değişkenleri
  3. Varsayılanlar ve İzleme
  4. Struct'lara Bağlama
← Go Academy Sayfasına Dön