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
portanahtarıMYAPP_PORTortam 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_PORTTek 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üros.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 trueBir 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
AutomaticEnvveSetEnvPrefix, anahtarlarıPREFIX_KEYbiçimine eşler- İç içe noktalı anahtarlar için
SetEnvKeyReplacerkullanın - Standart kitaplık bunu
os.Getenv/os.LookupEnvile 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
- Yapılandırma Dosyalarını Okuma
- Ortam Değişkenleri
- Varsayılanlar ve İzleme
- Struct'lara Bağlama