Z uporabo YAML lahko pišete programe Go, ki sodelujejo z drugimi, ki uporabljajo podatkovni format. Človeško berljiv je, tako enostaven za delo.
YAML je priljubljen človeku berljiv format serializacije podatkov. Podatkovni jezik je primeren za konfiguracijske datoteke, izmenjavo podatkov in shranjevanje strukturiranih podatkov.
Številni projekti, ki temeljijo na Go, vključno z Gqlgen in orodji za gradnjo, kot je Docker-compose, za konfiguracijo uporabljajo datoteke YAML. Kot razvijalec Go lahko uporabljate orodja, kot je paket yaml, za razčlenjevanje in manipuliranje podatkov YAML.
Razumevanje datoteke YAML
Datoteke YAML (YAML Ain't Markup Language) so sestavljene iz parov ključ-vrednost, seznamov in ugnezdenih struktur. Sintaksa YAML je zasnovana tako, da je vizualno privlačna in enostavna za branje. Zaradi tega je priljubljena izbira za konfiguracijske datoteke s Kubernetesom in drugimi orodja za orkestracijo z uporabo YAML.
Za razliko od drugih formatov podatkov, kot je XML in JSON, se YAML opira na zamik za predstavitev hierarhije.
Tukaj je opisano, kako lahko definirate osnovna polja z YAML:
ime:JanezSrna
starost:30
E-naslov:[email protected]
Dvopičje loči ključ od njegove vrednosti, ki je lahko katera koli veljavna podatkovna vrsta YAML, vključno z nizi, številkami, logičnimi vrednostmi ali ugnezdenimi strukturami.
Seznami vam omogočajo, da predstavljate zbirko vrednosti. Če želite definirati seznam v YAML, pred vsakim elementom uporabite vezaj, ki mu sledi presledek:
sadje:
-jabolko
-banana
-oranžna
tukaj, sadje je ključ, črte s vezaji pa določajo seznam sadja.
YAML podpira tudi ugnezdene strukture, kar vam omogoča, da predstavljate kompleksne podatkovne hierarhije:
oseba:
ime:JanezSrna
starost:30
naslov:
ulica:123Glavnisv
mesto:Anytown
država:ZDA
The oseba ključ vsebuje drug niz parov ključ-vrednost, ki tvorijo ugnezdeno strukturo. The naslov ključ ima svoj nabor parov ključ-vrednost.
Delo z YAML v Go
Go ne ponuja vgrajene funkcije za datoteke YAML, vendar obstajajo paketi tretjih oseb, ki jih ponujajo.
The yaml paket je priljubljen paket za delo z datotekami YAML. Zagotavlja:
- Funkcije razčlenjevanja in serializacije.
- Podpora za oznake YAML.
- Celovita skladnost s specifikacijo YAML.
- Natančen nadzor nad razvrščanjem in razvrščanjem.
- Obravnava napak.
- Združljivost z več različicami YAML.
Odprite terminal in zaženite ta ukaz, da namestite paket YAML za svoj projekt:
# namestite različico 3 paketa yaml
pojdi po gopkg.in/yaml.v3
Po namestitvi paketa lahko uporabite uvoz stavek za uvoz paketa v vaše datoteke Go.
uvoz"gopkg.in/yaml.v3"
Izberete lahko več različic YAML glede na različico specifikacije YAML, ki jo želite uporabiti.
Branje in razčlenjevanje podatkovnih struktur YAML to Go
Ena bistvena naloga, ki jo boste želeli opraviti, je razčlenjevanje podatkovnih struktur YAML to Go. The yaml ponuja preprost in priročen API za to.
Upoštevajte te podatke YAML:
# izhod.yaml
oseba:
ime:JanezSrna
starost:30
E-naslov:[email protected]
Definirate lahko ustrezno strukturo z ujemajočimi se imeni polj za razčlenitev podatkov YAML v podatkovno strukturo Go z yaml paket.
// Struktura osebe predstavlja ključ osebe v YAML.
vrsta Oseba struct {
Ime vrvica`yaml:"ime"`
Starost int`yaml:"starost"`
E-naslov vrvica`yaml:"e-pošta"`
}
The yaml oznake struct pomagajo preslikati ključe YAML v polja struct med operacijo razčlenjevanja.
Tukaj je opisano, kako lahko podatke YAML razčlenite v podatkovno strukturo Go:
uvoz (
"fmt"
"gopkg.in/yaml.v3"
"os"
)funkglavni() {
// preberite datoteko output.yaml
podatki, napaka := os. ReadFile("output.yaml")če napaka!= nič {
panika(napaka)
}
// ustvarite strukturo osebe in deserializirajte podatke v to strukturo
var oseba Oseba
če napaka := yaml. Unmarshal (podatki, &oseba); napaka!= nič {
panika(napaka)
}
// natisni polja na konzolo
fmt. Printf("Ime: %s\n", oseba. ime)
fmt. Printf("Starost: %d\n", oseba. starost)
fmt. Printf("E-pošta: %s\n", oseba. E-naslov)
}
The glavni funkcija bere izhod.yaml datoteko z ioutil paketi ReadFile funkcijo. Nato ustvari primerek Oseba struct in razčleni podatke v strukturo z Unmarshal metoda yaml paket. The glavni funkcija natisne polja iz primerka struct; tukaj je rezultat:
Vstavljanje podatkov v datoteko YAML
Podatkovne strukture Go lahko uporabite za vstavljanje podatkov v datoteke YAML. Tukaj je opisano, kako lahko vstavite podatke v datoteko YAML s primerkom datoteke Oseba struktura:
funkglavni() {
// Ustvarite primerek strukture Person z vzorčnimi podatki
oseba := oseba{
ime: "John Doe",
starost: 30,
E-naslov: "[email protected]",
}// Serializirajte strukturo osebe v format YAML
podatki, napaka := yaml. Maršal (&oseba)če napaka!= nič {
panika(napaka)
}// Zapišite serializirane podatke YAML v datoteko z imenom "output.yaml"
napaka = os. WriteFile("output.yaml", podatki, 0644)če napaka!= nič {
panika(napaka)
}
fmt. Println("Podatki, zapisani v output.yaml")
}
The oseba spremenljivka je primerek Oseba vrsta strukture. Uporabi maršal metoda yaml paket za pretvorbo strukture v YAML. Prevzame primerek strukture in vrne predstavitev YAML ter napako.
Lahko uporabite WriteFile funkcija os paket za pisanje podatkov YAML v vašo datoteko (v tem primeru izhod.yaml).
Po uspešni operaciji serializacije podatkov YAML in pisanja se datoteka glavni funkcija natisne sporočilo na konzolo.
YAML lahko marshalirate in unmarshalirate v zemljevide, kot to počnete s strukturami.
Tukaj je primer razvrščanja in razvrščanja podatkov YAML z zemljevidi:
paket glavni
uvoz (
"fmt"
"gopkg.in/yaml.v3"
)funkglavni() {
// Podatki za razvrščanje
podatki := zemljevid[vrvica]vmesnik{}{
"ime": "John Doe",
"starost": 30,
"E-naslov": "[email protected]",
}// Razvrščanje podatkov v YAML
yamlData, napaka := yaml. Maršal (podatki)če napaka!= nič {
fmt. Println("Napaka med razvrščanjem:", napaka)
vrnitev
}fmt. Println("Razporejeni podatki YAML:")
fmt. Println(vrvica(yamlData))// Razvrščanje podatkov YAML v zemljevid
var unmarshalledData zemljevid[vrvica]vmesnik{}
napaka = yaml. Unmarshal (yamlData, &unmarshalledData)če napaka!= nič {
fmt. Println("Napaka med razvrščanjem:", napaka)
vrnitev
}
fmt. Println("\nNerazvrščeni podatki:")
fmt. Println (unmarshalledData)
}
Postopek je enak kot pri vrste struktur, le da za predstavitev podatkov uporabljate zemljevide. The Unmarshal in maršal metode delujejo za obe vrsti podatkov.
Docker Compose za konfiguracijo uporablja datoteke YAML
Delo z datotekami YAML v Go zagotavlja močan in prilagodljiv pristop za upravljanje konfiguracijskih podatkov.
Eden vidnih primerov uporabe datotek YAML je Docker Compose, kjer datoteka YAML služi kot konfiguracija za definiranje in upravljanje aplikacij Docker z več vsebniki.
Docker Compose izkorišča preprostost in berljivost YAML za definiranje storitev, omrežij, nosilcev in drugih komponent kontejnerskih aplikacij za enostavno orkestracijo vsebnikov.