YAML kullanarak, veri biçimini kullanarak başkalarıyla birlikte çalışan Go programları yazabilirsiniz. İnsanlar tarafından okunabilir, üzerinde çalışmak çok kolay.
YAML, insanlar tarafından okunabilen popüler bir veri serileştirme biçimidir. Veri dili, yapılandırma dosyaları, veri alışverişi ve yapılandırılmış veri depolama için uygundur.
Gqlgen ve Docker-compose gibi oluşturma araçları dahil olmak üzere birçok Go tabanlı proje, yapılandırma için YAML dosyalarını kullanır. Bir Go geliştiricisi olarak, YAML verilerini ayrıştırmak ve değiştirmek için yaml paketi gibi araçları kullanabilirsiniz.
YAML Dosyasını Anlamak
YAML (YAML Ain't Markup Language) dosyaları, anahtar/değer çiftleri, listeler ve iç içe geçmiş yapılardan oluşur. YAML sözdizimi, görsel olarak çekici ve okunması kolay olacak şekilde tasarlanmıştır. Bu, onu Kubernetes ve diğer yapılandırma dosyaları için popüler bir seçim haline getirir. YAML kullanan düzenleme araçları.
Gibi diğer veri biçimlerinin aksine XML ve JSONYAML, hiyerarşiyi temsil etmek için girintiye dayanır.
YAML ile temel alanları şu şekilde tanımlayabilirsiniz:
isim:JohnDoe
yaş:30
e-posta:[email protected]
İki nokta üst üste, anahtarı, dizeler, sayılar, mantıksal değerler veya iç içe yapılar dahil olmak üzere herhangi bir geçerli YAML veri türü olabilen değerinden ayırır.
Listeler, bir değerler koleksiyonunu temsil etmenize izin verir. YAML'de bir liste tanımlamak için her öğeden önce bir tire ve ardından bir boşluk kullanın:
meyveler:
-elma
-muz
-turuncu
Burada, meyveler anahtardır ve tireli çizgiler bir meyve listesini tanımlar.
YAML, karmaşık veri hiyerarşilerini temsil etmenizi sağlayan iç içe yapıları da destekler:
kişi:
isim:JohnDoe
yaş:30
adres:
sokak:123AnaAziz
şehir:Herhangi bir kasaba
ülke:Amerika Birleşik Devletleri
bu kişi key, iç içe geçmiş bir yapı oluşturan başka bir anahtar-değer çifti kümesi içerir. bu adres anahtarın kendi anahtar/değer çiftleri kümesi vardır.
Go'da YAML ile Çalışma
Go, YAML dosyaları için yerleşik işlevsellik sağlamaz, ancak bunu sağlayan üçüncü taraf paketleri vardır.
bu tatlım paket YAML dosyalarıyla çalışmak için popüler bir pakettir. Sağlar:
- Ayrıştırma ve serileştirme özellikleri.
- YAML etiketleri için destek.
- Kapsamlı YAML spesifikasyonu uyumluluğu.
- Sıralama ve sıra dışı bırakma üzerinde ayrıntılı kontrol.
- Hata yönetimi.
- Birden çok YAML sürümüyle uyumluluk.
Terminalinizi açın ve projeniz için YAML paketini kurmak üzere bu komutu çalıştırın:
# yaml paketinin 3. sürümünü kurun
gidip gopkg.in/yaml.v3'ü edinin
Paketi kurduktan sonra kullanabilirsiniz. içe aktarmak paketi Go dosyalarınıza içe aktarmak için ifade.
içe aktarmak"gopkg.in/yaml.v3"
Kullanmak istediğiniz YAML belirtiminin sürümüne göre birden çok YAML sürümü seçebilirsiniz.
YAML to Go Veri Yapılarını Okuma ve Ayrıştırma
Gerçekleştirmek isteyeceğiniz temel görevlerden biri, YAML to Go veri yapılarını ayrıştırmaktır. bu tatlım package, bunu yapmak için basit ve kullanışlı bir API sağlar.
Bu YAML verilerini göz önünde bulundurun:
# çıktı.yaml
kişi:
isim:JohnDoe
yaş:30
e-posta:[email protected]
YAML verilerini bir Go veri yapısına ayrıştırmak için eşleşen alan adlarıyla karşılık gelen bir yapı tanımlayabilirsiniz. tatlım paket.
// Kişi yapısı, YAML'deki kişi anahtarını temsil eder.
tip Kişi yapı {
İsim sicim`yaml:"isim"`
Yaş int`yaml:"yaş"`
E-posta sicim`yaml:"e-posta"`
}
bu tatlım yapı etiketleri, ayrıştırma işlemi sırasında YAML anahtarlarını yapı alanlarıyla eşlemeye yardımcı olur.
YAML verilerini bir Go veri yapısına şu şekilde ayrıştırabilirsiniz:
içe aktarmak (
"fmt"
"gopkg.in/yaml.v3"
"işletim sistemi"
)işlevana() {
// output.yaml dosyasını oku
veri, hata := işletim sistemi. Dosyayı Oku("output.yaml")eğer hata!= sıfır {
panik(hata)
}
// bir kişi yapısı oluştur ve bu yapıdaki verilerin serisini kaldır
var kişi kişi
eğer hata := yaml. Mareşal (veri, &kişi); hata!= sıfır {
panik(hata)
}
// alanları konsola yazdır
fmt. Yazdır("Ad: %s\n", kişi. İsim)
fmt. Yazdır("Yaş: %d\n", kişi. Yaş)
fmt. Yazdır("E-posta: %s\n", kişi. E-posta)
}
bu ana işlev okur çıktı.yaml ile dosya ioutil paketin Dosyayı Oku işlev. Daha sonra örneğini oluşturur Kişi struct ve verileri struct ile ayrıştırır. Mareşal yöntemi tatlım paket. bu ana işlev, yapı örneğindeki alanları yazdırır; işte sonuç:
YAML Dosyasına Veri Ekleme
YAML dosyalarına veri eklemek için Go veri yapılarını kullanabilirsiniz. Bir YAML dosyasına şu şekilde veri ekleyebilirsiniz: Kişi yapı:
işlevana() {
// Örnek verilerle Kişi yapısının bir örneğini oluşturun
kişi := Kişi{
İsim: "John Doe",
Yaş: 30,
E-posta: "[email protected]",
}// Kişi yapısını YAML biçiminde serileştir
veri, hata := yaml. Mareşal(&kişi)eğer hata!= sıfır {
panik(hata)
}// Serileştirilmiş YAML verilerini "output.yaml" adlı bir dosyaya yazın
hata = os. Dosya Yaz("output.yaml", veri, 0644)eğer hata!= sıfır {
panik(hata)
}
fmt. Yazdır("Çıktı.yaml'a yazılan veriler")
}
bu kişi değişken, örneğinin bir örneğidir Kişi yapı türü. Kullan mareşal yöntemi tatlım yapıyı YAML'ye dönüştürmek için paket. Yapı örneğini alır ve YAML temsilini ve bir hata döndürür.
kullanabilirsiniz Dosya Yaz işlevi işletim sistemi YAML verilerini dosyanıza yazmak için paket (bu durumda, çıktı.yaml).
Başarılı bir YAML veri serileştirme ve yazma işleminden sonra, ana işlevi konsola bir mesaj yazdırır.
Yapılarla yaptığınız gibi YAML'ı haritalara sıralayabilir ve sıra dışı bırakabilirsiniz.
YAML verilerini haritalarla sıralamaya ve sıralamayı kaldırmaya bir örnek:
paket ana
içe aktarmak (
"fmt"
"gopkg.in/yaml.v3"
)işlevana() {
// Sıralama için veriler
veri := harita[sicim]arayüz{}{
"isim": "John Doe",
"yaş": 30,
"e-posta": "[email protected]",
}// Verileri YAML'ye sıralama
yamlData, hata := yaml. Mareşal (veri)eğer hata!= sıfır {
fmt. Yazdır("Sıralama sırasında hata:", hata)
geri dönmek
}fmt. Yazdır("Sıralanmış YAML verileri:")
fmt. Yazdır(sicim(yamlData))// YAML verilerini bir haritaya ayırma
var unmarshalledData harita[sicim]arayüz{}
hata = yaml. Unmarshal (yamlData, &unmarshalledData)eğer hata!= sıfır {
fmt. Yazdır("Serbest bırakma sırasında hata:", hata)
geri dönmek
}
fmt. Yazdır("\nMarshalled olmayan veri:")
fmt. Println (unmarshalledData)
}
süreç için aynıdır yapı türleri, veri gösterimi için haritaları kullanmanız dışında. bu Mareşal Ve mareşal yöntemler her iki veri türü için de çalışır.
Docker Compose, Yapılandırma İçin YAML Dosyalarını Kullanıyor
Go'da YAML dosyalarıyla çalışmak, yapılandırma verilerini yönetmek için güçlü ve esnek bir yaklaşım sağlar.
YAML dosyaları için öne çıkan bir kullanım durumu, bir YAML dosyasının çok kapsayıcılı Docker uygulamalarını tanımlamak ve yönetmek için yapılandırma işlevi gördüğü Docker Compose'dur.
Docker Compose, kap düzenlemesini kolaylaştırmak için kapsayıcılı uygulamaların hizmetleri, ağları, birimleri ve diğer bileşenlerini tanımlamak için YAML'nin basitliğinden ve okunabilirliğinden yararlanır.