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.

instagram viewer

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:123utca
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.