A YAML használatával olyan Go programokat írhat, amelyek az adatformátum használatával együttműködnek másokkal. Ember által is olvasható, így könnyű vele dolgozni.
A YAML egy népszerű, ember által is olvasható adatsorosító formátum. Az adatnyelv konfigurációs fájlok, adatcserék és strukturált adatok tárolására alkalmas.
Sok Go-alapú projekt, köztük a Gqlgen és az olyan buildeszközök, mint a Docker-compose, YAML fájlokat használ a konfigurációhoz. Go fejlesztőként olyan eszközöket használhat, mint a yaml csomag a YAML adatok elemzéséhez és kezeléséhez.
A YAML fájl megértése
A YAML (YAML Ain't Markup Language) fájlok kulcs-érték párokból, listákból és beágyazott struktúrákból állnak. A YAML szintaxist úgy tervezték, hogy vizuálisan vonzó és könnyen olvasható legyen. Emiatt népszerű választás a konfigurációs fájlok számára, a Kubernetes és más alkalmazásokhoz hangszerelési eszközök YAML használatával.
Más adatformátumoktól eltérően, mint pl XML és JSON, a YAML a behúzásra támaszkodik a hierarchia megjelenítéséhez.
A következőképpen határozhat meg alapvető mezőket a YAML-lel:
név:JánosDámvadtehén
kor:30
email:john.doe@example.com
A kettőspont választja el a kulcsot az értékétől, amely bármilyen érvényes YAML adattípus lehet, beleértve a karakterláncokat, számokat, logikai értékeket vagy beágyazott struktúrákat.
A listák segítségével értékek gyűjteményét ábrázolhatja. Lista YAML-ben történő meghatározásához használjon kötőjelet, majd szóközt minden elem előtt:
gyümölcsök:
-alma
-banán
-narancs
Itt, gyümölcsök a kulcs, a kötőjeles sorok pedig a gyümölcsök listáját határozzák meg.
A YAML támogatja a beágyazott struktúrákat is, lehetővé téve az összetett adathierarchiák ábrázolását:
személy:
név:JánosDámvadtehén
kor:30
cím:
utca:123Főutca
város:Anytown
ország:Egyesült Államok
A személy kulcs egy másik kulcs-érték párokat tartalmaz, amelyek egy beágyazott struktúrát alkotnak. A cím kulcsnak saját kulcs-érték párkészlete van.
A YAML használata a Go-ban
A Go nem biztosít beépített funkciókat a YAML-fájlokhoz, de vannak harmadik féltől származó csomagok, amelyek igen.
A yaml csomag egy népszerű csomag YAML fájlokkal való munkavégzéshez. Ez biztosítja:
- Elemzési és szerializálási funkciók.
- YAML címkék támogatása.
- Átfogó YAML specifikációnak való megfelelés.
- A rendezés és a szétválasztás finomszemcsés irányítása.
- Hibakezelés.
- Kompatibilitás több YAML verzióval.
Nyissa meg a terminált, és futtassa ezt a parancsot a YAML-csomag telepítéséhez a projekthez:
# telepítse a yaml csomag 3-as verzióját
menj, töltsd le a gopkg.in/yaml.v3-at
A csomag telepítése után használhatja a import utasítással importálja a csomagot a Go fájljaiba.
import"gopkg.in/yaml.v3"
Több YAML-verziót is választhat a használni kívánt YAML-specifikáció verziója alapján.
YAML to Go adatstruktúrák olvasása és elemzése
Az egyik alapvető feladat, amelyet el szeretne végezni, a YAML to Go adatstruktúrák elemzése. A yaml csomag egy egyszerű, kényelmes API-t biztosít ehhez.
Tekintsük ezeket a YAML adatokat:
# output.yaml
személy:
név:JánosDámvadtehén
kor:30
email:john.doe@example.com
Megadhat egy megfelelő struktúrát egyező mezőnevekkel, hogy a YAML adatokat egy Go adatstruktúrába elemezhesse a yaml csomag.
// A Person struct a YAML személy kulcsát jelenti.
típus Személy struct {
Név húr`yaml:"név"`
Kor int`yaml:"életkor"`
Email húr`yaml:"e-mail"`
}
A yaml A struct címkék segítenek a YAML kulcsoknak a struct mezőkhöz való leképezésében az elemzési művelet során.
Így elemezheti a YAML-adatokat Go adatstruktúrába:
import (
"fmt"
"gopkg.in/yaml.v3"
"os"
)funcfő-() {
// olvassa be az output.yaml fájlt
adatok, err := os. ReadFile("output.yaml")ha hiba! = nulla {
pánik(téved)
}
// hozzon létre egy személy struktúrát, és deserializálja az adatokat ebbe a struktúrába
var személy Személy
ha err := yaml. Unmarshal (adatok, &person); hiba! = nulla {
pánik(téved)
}
// kinyomtatja a mezőket a konzolra
fmt. Printf("Név: %s\n", személy. Név)
fmt. Printf("Kor: %d\n", személy. Kor)
fmt. Printf("E-mail: %s\n", személy. Email)
}
A fő- függvény beolvassa a output.yaml fájllal a ioutil csomagok Fájl olvasása funkció. Ezután létrehoz egy példányt a Személy struct és elemzi az adatokat a struct-ba a Unmarsall módszere a yaml csomag. A fő- függvény kiírja a mezőket a struct példányból; itt az eredmény:
Adatok beszúrása YAML fájlba
A Go adatstruktúrák segítségével adatokat illeszthet be YAML-fájlokba. Így illeszthet be adatokat egy YAML-fájlba a Személy struktúra:
funcfő-() {
// A Person struktúra példányának létrehozása mintaadatokkal
személy := személy{
Név: "Gipsz Jakab",
Kor: 30,
Email: "john.doe@example.com",
}// Sorosítsa a személyi struktúrát YAML formátumba
adatok, err := yaml. marsall (&személy)ha hiba! = nulla {
pánik(téved)
}// Írja be a soros YAML adatokat egy "output.yaml" nevű fájlba
err = os. WriteFile("output.yaml", adatok, 0644)ha hiba! = nulla {
pánik(téved)
}
fmt. Println("Az output.yaml fájlba írt adatok")
}
A személy változó a Személy struktúra típusa. Használja a Marsall módszere a yaml csomagot a struktúra YAML-re konvertálásához. Beveszi a struktúra példányát, és visszaadja a YAML-reprezentációt és egy hibát.
Használhatja a WriteFile funkciója os csomag a YAML adatok fájlba írásához (ebben az esetben output.yaml).
Sikeres YAML adatsorosítás és írási művelet után a fő- függvény üzenetet nyomtat a konzolra.
A YAML-t a struktúrákhoz hasonlóan a térképekre rendezheti és megszüntetheti.
Íme egy példa a YAML adatok térképekkel történő rendezésére és megszüntetésére:
csomag fő-
import (
"fmt"
"gopkg.in/yaml.v3"
)funcfő-() {
// Adatok a rendezéshez
adatok := térkép[húr]felület{}{
"név": "Gipsz Jakab",
"kor": 30,
"email": "johndoe@example.com",
}// Az adatok felosztása a YAML-be
yamlData, err := yaml. marsall (adatok)ha hiba! = nulla {
fmt. Println("Hiba a rendezés során:", hiba)
Visszatérés
}fmt. Println("Marshaled YAML adatok:")
fmt. Println(húr(yamlData))// A YAML adatok feloldása térképen
var unmarshalledData térkép[húr]felület{}
err = yaml. Unmarshal (yamlData, &unmarshalledData)ha hiba! = nulla {
fmt. Println("Hiba a feloldás során:", hiba)
Visszatérés
}
fmt. Println("\nNem rendezett adatok:")
fmt. Println (unmarshalledData)
}
A folyamat ugyanaz, mint a struktúra típusok, kivéve, hogy térképeket használ az adatok megjelenítéséhez. A Unmarsall és Marsall módszerek mindkét adattípusra működnek.
A Docker Compose YAML fájlokat használ a konfigurációhoz
A YAML fájlokkal való munka a Go alkalmazásban hatékony és rugalmas megközelítést biztosít a konfigurációs adatok kezeléséhez.
A YAML-fájlok egyik kiemelkedő felhasználási esete a Docker Compose, ahol egy YAML-fájl szolgál konfigurációként a többtárolós Docker-alkalmazások meghatározásához és kezeléséhez.
A Docker Compose a YAML egyszerűségét és olvashatóságát kihasználja szolgáltatások, hálózatok, kötetek és a konténeres alkalmazások egyéb összetevőinek meghatározásában, hogy megkönnyítse a konténerek összehangolását.