Izmantojot YAML, varat rakstīt Go programmas, kas sadarbojas ar citām, izmantojot datu formātu. Tas ir cilvēkiem lasāms, tāpēc ar to ir viegli strādāt.

YAML ir populārs cilvēkiem lasāms datu serializācijas formāts. Datu valoda ir piemērota konfigurācijas failiem, datu apmaiņai un strukturētu datu glabāšanai.

Daudzi Go balstīti projekti, tostarp Gqlgen un veidošanas rīki, piemēram, Docker-compose, konfigurēšanai izmanto YAML failus. Kā Go izstrādātājs varat izmantot tādus rīkus kā yaml pakotne, lai parsētu un apstrādātu YAML datus.

Izpratne par YAML failu

YAML (YAML Ain't Markup Language) faili sastāv no atslēgu un vērtību pāriem, sarakstiem un ligzdotām struktūrām. YAML sintakse ir izstrādāta tā, lai tā būtu vizuāli pievilcīga un viegli lasāma. Tas padara to par populāru izvēli konfigurācijas failiem, izmantojot Kubernetes un citus orķestrēšanas rīki, izmantojot YAML.

Atšķirībā no citiem datu formātiem, piemēram XML un JSON, YAML paļaujas uz atkāpi, lai attēlotu hierarhiju.

Lūk, kā jūs varat definēt pamata laukus, izmantojot YAML:

nosaukums:DžonsStirna
vecums:30
e-pasts:[email protected]

Kols atdala atslēgu no tās vērtības, kas var būt jebkurš derīgs YAML datu tips, tostarp virknes, skaitļi, Būla vērtības vai ligzdotas struktūras.

Saraksti ļauj attēlot vērtību kolekciju. Lai YAML definētu sarakstu, pirms katra vienuma izmantojiet defisi, kam seko atstarpe:

augļi:
-ābolu
-banāns
-apelsīns

Šeit, augļiem ir galvenais, un līnijas ar defisēm nosaka augļu sarakstu.

YAML atbalsta arī ligzdotas struktūras, kas ļauj attēlot sarežģītas datu hierarhijas:

persona:
nosaukums:DžonsStirna
vecums:30
adrese:
iela:123GalvenāSv
pilsēta:Anytown
valsts:ASV

The persona atslēga satur citu atslēgu un vērtību pāru kopu, kas veido ligzdotu struktūru. The adrese atslēgai ir savs atslēgu un vērtību pāru kopums.

Darbs ar YAML pakalpojumā Go

Go nenodrošina iebūvētu funkcionalitāti YAML failiem, taču ir trešo pušu pakotnes, kas to nodrošina.

The jaml iepakojums ir populāra pakotne darbam ar YAML failiem. Tas nodrošina:

  • Parsēšanas un serializācijas līdzekļi.
  • Atbalsts YAML tagiem.
  • Visaptveroša YAML specifikāciju atbilstība.
  • Smalka kontrole pār šķirošanu un atdalīšanu.
  • Kļūdu apstrāde.
  • Saderība ar vairākām YAML versijām.

Atveriet savu termināli un palaidiet šo komandu, lai instalētu YAML pakotni savam projektam:

# instalējiet yaml pakotnes 3. versiju
dodieties uz gopkg.in/yaml.v3

Pēc pakotnes instalēšanas varat izmantot imports paziņojumu, lai importētu pakotni savos Go failos.

imports"gopkg.in/yaml.v3"

Varat izvēlēties vairākas YAML versijas, pamatojoties uz YAML specifikācijas versiju, kuru vēlaties izmantot.

YAML to Go datu struktūru lasīšana un parsēšana

Viens no svarīgākajiem uzdevumiem, ko vēlaties veikt, ir YAML to Go datu struktūru parsēšana. The jaml pakotne nodrošina vienkāršu, ērtu API, lai to izdarītu.

Apsveriet šos YAML datus:

# output.yaml

persona:
nosaukums:DžonsStirna
vecums:30
e-pasts:[email protected]

Varat definēt atbilstošu struktūru ar atbilstošiem lauku nosaukumiem, lai parsētu YAML datus Go datu struktūrā ar jaml iepakojums.

// Personas struktūra apzīmē personas atslēgu YAML.
veids Persona struktūra {
Vārds virkne`yaml:"vārds"".
Vecums starpt`yaml: "vecums"".
E-pasts virkne`yaml:"e-pasts"`
}

The jaml struct tagi palīdz kartēt YAML atslēgas ar struct laukiem parsēšanas darbības laikā.

Lūk, kā varat parsēt YAML datus Go datu struktūrā.

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

funcgalvenais() {
// lasiet failu output.yaml
dati, kļūda := os. ReadFile("output.yaml")

ja kļūda! = nulle {
panika(kļūda)
}

// izveidojiet personas struktūru un deserializējiet datus šajā struktūrā
var persona Persona

ja err := yaml. Unmarshal (dati, &persona); kļūda! = nulle {
panika(kļūda)
}

// izdrukājiet laukus konsolē
fmt. Printf("Vārds: %s\n", persona. Vārds)
fmt. Printf("Vecums: %d\n", persona. Vecums)
fmt. Printf("E-pasts: %s\n", persona. e-pasts)
}

The galvenais funkcija nolasa izvade.yaml failu ar ioutil iepakojums Lasīt failu funkciju. Pēc tam tiek izveidots eksemplārs Persona struct un parsē datus struktūrā ar Unmaršals metode jaml iepakojums. The galvenais funkcija izdrukā laukus no struct instances; lūk rezultāts:

Datu ievietošana YAML failā

Varat izmantot Go datu struktūras, lai ievietotu datus YAML failos. Tālāk ir norādīts, kā varat ievietot datus YAML failā ar gadījumu Persona struktūra:

funcgalvenais() {
// Izveidojiet Personas struktūras gadījumu ar datu paraugiem
persona := Persona{
Vārds: "Džons Dū",
Vecums: 30,
E-pasts: "[email protected]",
}

// Serializējiet personas struktūru YAML formātā
dati, kļūda := yaml. maršals (&persona)

ja kļūda! = nulle {
panika(kļūda)
}

// Ierakstiet serializētos YAML datus failā ar nosaukumu "output.yaml"
err = os. WriteFile("output.yaml", dati, 0644)

ja kļūda! = nulle {
panika(kļūda)
}

fmt. Println("Dati rakstīti uz output.yaml")
}

The persona mainīgais ir gadījums Persona struktūras veids. Izmantojiet maršals metode jaml pakotni, lai pārveidotu struktūru par YAML. Tas izmanto struktūras gadījumu un atgriež YAML attēlojumu un kļūdu.

Jūs varat izmantot Rakstīt failu funkcija os pakotne YAML datu ierakstīšanai failā (šajā gadījumā izvade.yaml).

Pēc veiksmīgas YAML datu serializācijas un rakstīšanas operācijas galvenais funkcija izdrukā ziņojumu konsolei.

Jūs varat sakārtot un atdalīt YAML kartēs tāpat kā ar struktūrām.

Tālāk ir sniegts piemērs YAML datu kārtošanai un atdalīšanai ar kartēm.

iepakojums galvenais

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

funcgalvenais() {
// Dati šķirošanai
dati := karte[virkne]saskarne{}{
"vārds": "Džons Dū",
"vecums": 30,
"e-pasts": "[email protected]",
}

// Datu sadalīšana YAML
yamlData, err := yaml. maršals (dati)

ja kļūda! = nulle {
fmt. Println("Kļūda kārtošanas laikā:", kļūda)
atgriezties
}

fmt. Println("Marshaled YAML dati:")
fmt. Println(virkne(yamlData))

// YAML datu atdalīšana kartē
var nešķiroti dati karte[virkne]saskarne{}
err = yaml. Unmarshal (yamlData, &unmarshalledData)

ja kļūda! = nulle {
fmt. Println("Kļūda atdalīšanas laikā:", kļūda)
atgriezties
}

fmt. Println("\nNeizšķirti dati:")
fmt. Println (unmarshalled Data)
}

Process ir tāds pats kā gadījumā konstrukciju veidi, izņemot to, ka datu attēlošanai izmantojat kartes. The Unmaršals un maršals metodes darbojas abiem datu tipiem.

Docker Compose konfigurācijai izmanto YAML failus

Darbs ar YAML failiem programmā Go nodrošina jaudīgu un elastīgu pieeju konfigurācijas datu pārvaldībai.

Viens no ievērojamākajiem YAML failu lietošanas gadījumiem ir Docker Compose, kur YAML fails kalpo kā konfigurācija vairāku konteineru Docker lietojumprogrammu definēšanai un pārvaldībai.

Docker Compose izmanto YAML vienkāršību un lasāmību, lai definētu pakalpojumus, tīklus, apjomus un citus konteinerizēto lietojumprogrammu komponentus, lai atvieglotu konteineru orķestrēšanu.