YAML-i abil saate kirjutada Go programme, mis toimivad teistega andmevormingut kasutades. See on inimestele loetav ja sellega on nii lihtne töötada.

YAML on populaarne inimloetav andmete serialiseerimisvorming. Andmekeel sobib konfiguratsioonifailide, andmevahetuse ja struktureeritud andmete salvestamiseks.

Paljud Go-põhised projektid, sealhulgas Gqlgen ja ehitustööriistad, nagu Docker-compose, kasutavad konfigureerimiseks YAML-faile. Go arendajana saate YAML-i andmete sõelumiseks ja töötlemiseks kasutada selliseid tööriistu nagu yamli pakett.

YAML-faili mõistmine

YAML (YAML Ain't Markup Language) failid koosnevad võtme-väärtuste paaridest, loenditest ja pesastatud struktuuridest. YAML-i süntaks on loodud visuaalselt atraktiivseks ja hõlpsasti loetavaks. See muudab selle populaarseks valikuks konfiguratsioonifailide jaoks koos Kubernetese ja teistega orkestreerimistööriistad YAML-i abil.

Erinevalt teistest andmevormingutest nagu XML ja JSON, YAML tugineb hierarhia esindamiseks taandele.

YAML-iga põhivälju saab määratleda järgmiselt.

nimi:JohnDoe
vanus:30
email:[email protected]

Käärsool eraldab võtme selle väärtusest, mis võib olla mis tahes kehtiv YAML-i andmetüüp, sealhulgas stringid, numbrid, tõeväärtused või pesastatud struktuurid.

Loendid võimaldavad teil esindada väärtuste kogumit. Loendi määratlemiseks YAML-is kasutage iga üksuse ees sidekriipsu, millele järgneb tühik:

puuviljad:
-õun
-banaan
-oranž

Siin puuviljad on võti ja sidekriipsuga read määratlevad puuviljade loendi.

YAML toetab ka pesastatud struktuure, mis võimaldavad teil esitada keerulisi andmehierarhiaid:

isik:
nimi:JohnDoe
vanus:30
aadress:
tänav:123PeamineSt
linn:Suvaline linn
riik:USA

The inimene võti sisaldab teist võtme-väärtuste paaride komplekti, mis moodustavad pesastatud struktuuri. The aadress võtmel on oma võtme-väärtuste paaride komplekt.

YAML-iga töötamine Go-s

Go ei paku YAML-failide jaoks sisseehitatud funktsioone, kuid on olemas kolmandate osapoolte paketid, mis seda pakuvad.

The yaml pakett on populaarne pakett YAML-failidega töötamiseks. See pakub:

  • Parsimise ja serialiseerimise funktsioonid.
  • YAML-i siltide tugi.
  • Üldine vastavus YAML-i spetsifikatsioonidele.
  • Täpne kontroll järjestuse ja eraldamise üle.
  • Vigade käsitlemine.
  • Ühilduvus mitme YAML-i versiooniga.

Avage oma terminal ja käivitage see käsk, et installida oma projekti YAML-pakett:

# installige yamli paketi versioon 3
hankige gopkg.in/yaml.v3

Pärast paketi installimist saate kasutada importida avaldus paketi importimiseks oma Go-failidesse.

importida"gopkg.in/yaml.v3"

Saate valida mitu YAML-i versiooni selle YAML-i spetsifikatsiooni versiooni põhjal, mida soovite kasutada.

YAML-i andmestruktuuride lugemine ja sõelumine

Üks oluline ülesanne, mida soovite täita, on YAML to Go andmestruktuuride sõelumine. The yaml pakett pakub selleks lihtsat ja mugavat API-d.

Kaaluge neid YAML-i andmeid:

# output.yaml

isik:
nimi:JohnDoe
vanus:30
email:[email protected]

YAML-i andmete sõelumiseks Go andmestruktuuriks saate määratleda vastava struktuuri sobivate väljanimedega yaml pakett.

// Isiku struktuur esindab YAML-is isikuvõtit.
tüüp Isik struktuur {
Nimi string`yaml:"nimi"".
Vanus int'yaml:"vanus"".
Meil string`yaml:"e-post"".
}

The yaml struct sildid aitavad vastendada YAML-i võtmeid parsimise ajal struct väljadele.

YAML-i andmed Go andmestruktuuriks sõelumiseks tehke järgmist.

importida (
"fmt"
"gopkg.in/yaml.v3"
"os"
)

funcpeamine() {
// lugege faili output.yaml
andmed, err := os. ReadFile("output.yaml")

kui eks!= null {
paanika(viga)
}

// looge isiku struktuur ja deserialiseerige andmed sellesse struktuuri
var isik Isik

kui eks := yaml. Unmarshal (andmed, &person); eks!= null {
paanika(viga)
}

// prindib väljad konsooli
fmt. Printf("Nimi: %s\n", inimene. nimi)
fmt. Printf("Vanus: %d\n", inimene. vanus)
fmt. Printf("E-post: %s\n", inimene. meil)
}

The peamine funktsioon loeb väljund.yaml faili koos ioutil pakendid Loe faili funktsiooni. Seejärel loob see eksemplari Isik struct ja parsib andmed struktuuri Unmarssal meetod yaml pakett. The peamine funktsioon prindib väljad struct eksemplarist; siin on tulemus:

Andmete sisestamine YAML-faili

Andmete YAML-failidesse sisestamiseks saate kasutada Go andmestruktuure. Siit saate teada, kuidas saate sisestada andmeid YAML-faili koos eksemplariga Isik struktuur:

funcpeamine() {
// Loo isikustruktuuri eksemplar näidisandmetega
isik := inimene{
Nimi: "John Doe",
Vanus: 30,
E-post: "[email protected]",
}

// Isikustruktuuri järjestamine YAML-vormingusse
andmed, err := yaml. marssal (&isik)

kui eks!= null {
paanika(viga)
}

// Kirjutage serialiseeritud YAML-i andmed faili nimega "output.yaml"
err = os. WriteFile("output.yaml", andmed, 0644)

kui eks!= null {
paanika(viga)
}

fmt. Println("Andmed on kirjutatud faili output.yaml")
}

The inimene muutuja on eksemplar Isik struktuuri tüüp. Kasuta marssal meetod yaml paketti struktuuri teisendamiseks YAML-iks. See võtab struktuuri eksemplari ja tagastab YAML-i esituse ja vea.

Võite kasutada Kirjuta faili funktsioon os pakett YAML-i andmete faili kirjutamiseks (antud juhul väljund.yaml).

Pärast edukat YAML-i andmete serialiseerimist ja kirjutamistoimingut peamine funktsioon prindib konsooli teate.

Saate YAML-i kaartidesse koondada ja tühistada, nagu teete struktuuride puhul.

Siin on näide YAML-i andmete kaartide jaotamise ja jaotuse tühistamise kohta:

pakett peamine

importida (
"fmt"
"gopkg.in/yaml.v3"
)

funcpeamine() {
// Andmed sorteerimiseks
andmed := kaart[string]liides{}{
"nimi": "John Doe",
"vanus": 30,
"e-post": "[email protected]",
}

// Andmete koondamine YAML-i
yamlData, err := yaml. marssal (andmed)

kui eks!= null {
fmt. Println("Viga korraldamise ajal:", eksitus)
tagasi
}

fmt. Println("Ühistatud YAML-i andmed:")
fmt. Println(string(yamlData))

// YAML-i andmete kaardile viimine
var unmarshalledData kaart[string]liides{}
err = yaml. Unmarshal (yamlData, &unmarshalledData)

kui eks!= null {
fmt. Println("Viga lahutamise ajal:", eksitus)
tagasi
}

fmt. Println("\nJärelemata andmed:")
fmt. Println (unmarshalled Data)
}

Protsess on sama, mis puhul struktuuri tüübid, välja arvatud see, et kasutate andmete esitamiseks kaarte. The Unmarssal ja marssal meetodid töötavad mõlema andmetüübi jaoks.

Docker Compose kasutab konfigureerimiseks YAML-faile

YAML-failidega töötamine Go-s pakub võimsat ja paindlikku lähenemisviisi konfiguratsiooniandmete haldamiseks.

Üks silmapaistev YAML-failide kasutusjuht on Docker Compose, kus YAML-fail toimib mitme konteineri Dockeri rakenduste määratlemise ja haldamise konfiguratsioonina.

Docker Compose kasutab YAMLi lihtsust ja loetavust teenuste, võrkude, mahtude ja muude konteinerrakenduste komponentide määratlemiseks, et muuta konteinerite orkestreerimine lihtsaks.