0Pricing
Go Academy · Ders

Ortam Değişkenleri

Yapılandırmayı ortamdan geçersiz kılın

Ortam Değişkenleri, CoddyKit'te ücretsiz bir Go Academy dersidir. Bu, 4 dersinin 2. 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.

Ortam Değişkenleri Neden Kullanılır

Twelve-Factor App metodolojisi, yapılandırmanın ortamda saklanmasını önerir. Ortam değişkenleri, dosyaları düzenlemeden aynı ikili dosyanın geliştirme, hazırlık ve üretim ortamlarında farklı davranmasını sağlar.

Viper, ortam değişkenlerini dosya yapılandırmasının üzerine katmanlayabilir.

Öncelik Sırası

Viper, bir anahtarı öncelik sırasına göre (en yüksekten başlayarak) kaynakları denetleyerek çözümler:

  • Açıkça yapılan Set çağrıları
  • Bayraklar
  • Ortam değişkenleri
  • Yapılandırma dosyası
  • Varsayılanlar

Dolayısıyla bir ortam değişkeni dosyadaki değeri geçersiz kılar, ancak açıkça yapılan bir Set çağrısına göre daha düşük önceliğe sahiptir.

Ortam Değişkeni Desteğini Etkinleştirme

viper.AutomaticEnv(), Viper'a istediğiniz her anahtar için ortam değişkenlerini denetlemesini söyler. Bundan sonra viper.GetString("port") çağrısı PORT ortam değişkenine bakar.

viper.AutomaticEnv()
port := viper.GetString("port")

Ön Ek Ekleme

İlişkisiz ortam değişkenleriyle çakışmayı önlemek için bir ön ek ayarlayın:

  • viper.SetEnvPrefix("myapp")
  • Artık port anahtarı MYAPP_PORT ortam değişkenine eşlenir

Viper, anahtarı büyük harfe çevirir ve ön eki alt çizgiyle başına ekler.

viper.SetEnvPrefix("myapp")
viper.AutomaticEnv()
fmt.Println(viper.GetString("port")) // reads MYAPP_PORT

İç İçe Anahtarları Ele Alma

Ortam değişkenleri nokta içeremez. Noktalı anahtarları alt çizgilere eşlemek için bir anahtar değiştirici kullanın; böylece server.port, SERVER_PORT olur.

replacer := strings.NewReplacer(".", "_")
viper.SetEnvKeyReplacer(replacer)
viper.AutomaticEnv()
// server.port -> SERVER_PORT

Tek Bir Değişkeni Bağlama

Otomatik kip yerine, viper.BindEnv ile bir anahtarı açıkça bağlayabilirsiniz. Bu, ortam değişkeninin adı ön ek kuralınıza uymadığında kullanışlıdır.

viper.BindEnv("id", "ACCOUNT_ID")
fmt.Println(viper.GetString("id"))

Standart Kitaplığın os Paketi

Perde arkasında bu işlem, standart kitaplığın os.Getenv ve os.LookupEnv aracılığıyla sunduğu süreç ortamından okuma yapar.

  • os.Getenv, ayarlanmamışsa boş bir dize döndürür
  • os.LookupEnv, mevcut olup olmadığını belirten ikinci bir mantıksal değer döndürür
val, ok := os.LookupEnv("PORT")
if !ok {
    val = "8080" // default
}

Go'da Ortam Değişkenlerini Ayarlama

Ortam değişkenlerini sınamalar veya varsayılanlar için os.Setenv ile programlı olarak ayarlayabilirsiniz. Bir sonraki adımda geçersiz kılma davranışını göstermek için tam olarak bunu kullanıyoruz.

os.Setenv("MYAPP_PORT", "9090")

Boş ve Ayarlanmamış Değerler

Dikkatli olun: boş bir dizeye ayarlanmış bir ortam değişkeni yine de mevcuttur. os.LookupEnv, ("", true) döndürür. Yalnızca os.Getenv kullanırsanız boş değeri ayarlanmamış değerden ayırt edemezsiniz; bu, mantıksal değerlere benzeyen bayraklar için önemlidir.

os.Setenv("FEATURE", "")
v, ok := os.LookupEnv("FEATURE")
fmt.Println(v == "", ok) // true true

Bir Araya Getirme (Kavram)

Tipik bir başlangıç akışı şöyledir: varsayılanlar için dosyayı okuyun, ardından dağıtım ortam değişkenlerinin öncelik kazanması için AutomaticEnv çağrısını yapın. Operasyon ekibi, YAML dosyasına dokunmadan MYAPP_PORT değerini değiştirebilir.

viper.SetConfigName("config")
viper.ReadInConfig()
viper.SetEnvPrefix("myapp")
viper.AutomaticEnv()
fmt.Println(viper.GetInt("port"))

Çalıştırılabilir: Ortam Değişkeniyle Geçersiz Kılma Gösterimi

Bu standart kitaplık programı, Viper'ın öncelik sırasını taklit eder: dosyadaki bir varsayılan değer ortam tarafından geçersiz kılınır.

package main

import (
    "fmt"
    "os"
)

func get(key, fileDefault string) string {
    if v, ok := os.LookupEnv(key); ok {
        return v
    }
    return fileDefault
}

func main() {
    os.Setenv("PORT", "9090")
    fmt.Println("port:", get("PORT", "8080"))
    fmt.Println("host:", get("HOST", "localhost"))
}

Hızlı Kontrol

Ortam değişkenleriyle yapılandırma konusundaki anlayışınızı sınayın.

Özet

Yapılandırmayı ortamdan geçersiz kılmayı öğrendiniz:

  • Ortam değişkenleri, Viper'ın öncelik sıralamasında dosyanın üzerinde yer alır
  • AutomaticEnv ve SetEnvPrefix, anahtarları PREFIX_KEY biçimine eşler
  • İç içe noktalı anahtarlar için SetEnvKeyReplacer kullanın
  • Standart kitaplık bunu os.Getenv / os.LookupEnv ile destekler

Sıkça Sorulan Sorular

“Ortam Değişkenleri” dersi ücretsiz mi?

Evet — “Ortam Değişkenleri” 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.

“Ortam Değişkenleri” dersinde ne öğreneceğim?

Yapılandırmayı ortamdan geçersiz kılın 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 2. dersidir.

“Ortam Değişkenleri” 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