Pomoću YAML-a možete pisati Go programe koji surađuju s drugima koristeći format podataka. Čitljiv je čovjeku, tako da je s njim lako raditi.

YAML je popularan format za serijalizaciju podataka čitljiv ljudima. Podatkovni jezik prikladan je za konfiguracijske datoteke, razmjenu podataka i pohranu strukturiranih podataka.

Mnogi projekti temeljeni na Gou, uključujući Gqlgen i alate za izradu kao što je Docker-compose, koriste YAML datoteke za konfiguraciju. Kao Go programer, možete koristiti alate poput paketa yaml za analizu i manipuliranje YAML podacima.

Razumijevanje YAML datoteke

YAML (YAML Ain't Markup Language) datoteke sastoje se od parova ključ-vrijednost, popisa i ugniježđenih struktura. YAML sintaksa dizajnirana je da bude vizualno privlačna i laka za čitanje. To ga čini popularnim izborom za konfiguracijske datoteke, s Kubernetesom i drugim alati za orkestraciju pomoću YAML-a.

Za razliku od drugih formata podataka poput XML i JSON, YAML se oslanja na uvlačenje za predstavljanje hijerarhije.

instagram viewer

Evo kako možete definirati osnovna polja s YAML-om:

Ime:IvanSrna
dob:30
email:[email protected]

Dvotočka odvaja ključ od njegove vrijednosti, koja može biti bilo koji važeći YAML tip podataka uključujući nizove, brojeve, Booleove vrijednosti ili ugniježđene strukture.

Popisi vam omogućuju predstavljanje zbirke vrijednosti. Za definiranje popisa u YAML-u upotrijebite crticu nakon koje slijedi razmak prije svake stavke:

voće:
-jabuka
-banana
-naranča

Ovdje, voće je ključ, a linije s crticom definiraju popis voća.

YAML također podržava ugniježđene strukture, omogućujući vam da predstavljate složene hijerarhije podataka:

osoba:
Ime:IvanSrna
dob:30
adresa:
ulica:123GlavniSv
Grad:Bilo koji grad
zemlja:SAD

The osoba ključ sadrži drugi skup parova ključ-vrijednost, tvoreći ugniježđenu strukturu. The adresa ključ ima vlastiti skup parova ključ-vrijednost.

Rad s YAML-om u Gou

Go ne pruža ugrađenu funkcionalnost za YAML datoteke, ali postoje paketi trećih strana koji to čine.

The yaml paket je popularan paket za rad s YAML datotekama. Pruža:

  • Značajke parsiranja i serijalizacije.
  • Podrška za YAML oznake.
  • Sveobuhvatna usklađenost sa YAML specifikacijom.
  • Fina kontrola nad ranžiranjem i skidanjem ranžiranja.
  • Rješavanje grešaka.
  • Kompatibilnost s više YAML verzija.

Otvorite svoj terminal i pokrenite ovu naredbu da biste instalirali YAML paket za svoj projekt:

# instalirajte verziju 3 paketa yaml
idi po gopkg.in/yaml.v3

Nakon instaliranja paketa, možete koristiti uvoz naredbu za uvoz paketa u vaše Go datoteke.

uvoz"gopkg.in/yaml.v3"

Možete odabrati više YAML verzija na temelju verzije YAML specifikacije koju želite koristiti.

Čitanje i raščlanjivanje struktura podataka YAML to Go

Jedan bitan zadatak koji ćete htjeti izvršiti je raščlanjivanje struktura podataka YAML to Go. The yaml paket pruža jednostavan, praktičan API za to.

Razmotrite ove YAML podatke:

# izlaz.yaml

osoba:
Ime:IvanSrna
dob:30
email:[email protected]

Možete definirati odgovarajuću strukturu s podudarnim nazivima polja za raščlanjivanje YAML podataka u Go strukturu podataka s yaml paket.

// Struktura osobe predstavlja ključ osobe u YAML-u.
tip Osoba strukturirati {
Ime niz`yaml:"ime"`
Dob int`yaml:"dob"`
E-mail niz`yaml:"e-pošta"`
}

The yaml struct oznake pomažu mapirati YAML ključeve u struct polja tijekom operacije parsiranja.

Evo kako možete analizirati YAML podatke u strukturu podataka Go:

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

funkglavni() {
// čitanje datoteke output.yaml
podaci, pogreška := os. ReadFile("output.yaml")

ako pogriješiti != nula {
panika(greška)
}

// kreiramo strukturu osoba i deserijaliziramo podatke u tu strukturu
var osoba Osoba

ako pogriješiti := yaml. Unmarshal (podaci, &osoba); pogriješiti != nula {
panika(greška)
}

// ispis polja na konzolu
fmt. Ispisf("Ime: %s\n", osoba. Ime)
fmt. Ispisf("Dob: %d\n", osoba. Dob)
fmt. Ispisf("E-pošta: %s\n", osoba. e-pošta)
}

The glavni funkcija čita izlaz.yaml datoteku s ioutil paketa ReadFile funkcija. Zatim stvara instancu Osoba struct i analizira podatke u strukturu pomoću Unmarshal metoda yaml paket. The glavni funkcija ispisuje polja iz instance strukture; evo rezultata:

Umetanje podataka u YAML datoteku

Možete koristiti Go podatkovne strukture za umetanje podataka u YAML datoteke. Evo kako možete umetnuti podatke u YAML datoteku s instancom Osoba struktura:

funkglavni() {
// Kreirajte instancu strukture Osoba s oglednim podacima
osoba := osoba{
Ime: "John Doe",
Dob: 30,
Email: "[email protected]",
}

// Serializiraj strukturu osobe u YAML format
podaci, pogreška := yaml. Maršal (&osoba)

ako pogriješiti != nula {
panika(greška)
}

// Zapišite serijalizirane YAML podatke u datoteku pod nazivom "output.yaml"
pogreška = os. WriteFile("output.yaml", podaci, 0644)

ako pogriješiti != nula {
panika(greška)
}

fmt. Println("Podaci upisani u output.yaml")
}

The osoba varijabla je instanca Osoba vrsta strukture. Koristiti Maršal metoda yaml paket za pretvaranje strukture u YAML. Uzima instancu strukture i vraća YAML reprezentaciju i pogrešku.

Možete koristiti WriteFile funkcija os paket za pisanje YAML podataka u vašu datoteku (u ovom slučaju, izlaz.yaml).

Nakon uspješne serije YAML podataka i operacije pisanja, datoteka glavni funkcija ispisuje poruku na konzolu.

Možete marširati i demarširati YAML u karte kao što to radite sa strukturama.

Evo primjera marširanja i demarširanja YAML podataka s kartama:

paket glavni

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

funkglavni() {
// Podaci za marshaling
podaci := karta[niz]sučelje{}{
"Ime": "John Doe",
"dob": 30,
"e-pošta": "[email protected]",
}

// Marshaling podataka u YAML
yamlData, pogreška := yaml. maršal (podaci)

ako pogriješiti != nula {
fmt. Println("Pogreška tijekom marshalinga:", pogreška)
povratak
}

fmt. Println("Marshaled YAML podaci:")
fmt. Println(niz(yamlData))

// Unmarshaling YAML podataka u mapu
var unmarshalledData karta[niz]sučelje{}
pogreška = jaml. Unmarshal (yamlData, &unmarshalledData)

ako pogriješiti != nula {
fmt. Println("Pogreška tijekom deklasiranja:", pogreška)
povratak
}

fmt. Println("\nNeuređeni podaci:")
fmt. Println (unmarshaledData)
}

Postupak je isti kao i za vrste struktura, osim što koristite karte za prikaz podataka. The Unmarshal i Maršal metode rade za obje vrste podataka.

Docker Compose koristi YAML datoteke za konfiguraciju

Rad s YAML datotekama u Gou pruža moćan i fleksibilan pristup za upravljanje konfiguracijskim podacima.

Jedan istaknuti slučaj upotrebe YAML datoteka je Docker Compose, gdje YAML datoteka služi kao konfiguracija za definiranje i upravljanje Docker aplikacijama s više spremnika.

Docker Compose iskorištava jednostavnost i čitljivost YAML-a za definiranje usluga, mreža, volumena i drugih komponenti kontejnerskih aplikacija kako bi orkestracija kontejnera bila laka.