Yapılandırma Dosyalarını Okuma
YAML, JSON ve TOML yükleyin
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/viperimport "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) ayarlarviper.SetConfigType("yaml")biçimi ayarlarviper.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
ConfigFileNotFoundErrordö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: trueTü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 = trueStandart 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,SetConfigTypeveAddConfigPathile yapılandırılırReadInConfig()dosyayı yükler ve bir hata döndürürGetIntveGetStringgibi 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.
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
- Yapılandırma Dosyalarını Okuma
- Ortam Değişkenleri
- Varsayılanlar ve İzleme
- Struct'lara Bağlama