Pomocou YAML môžete písať programy Go, ktoré spolupracujú s ostatnými pomocou dátového formátu. Je čitateľný pre ľudí, takže je ľahké s ním pracovať.

YAML je populárny ľudsky čitateľný formát serializácie údajov. Dátový jazyk je vhodný pre konfiguračné súbory, výmenu dát a ukladanie štruktúrovaných dát.

Mnoho projektov založených na Go, vrátane Gqlgen a nástrojov na vytváranie, ako je Docker-compose, používa na konfiguráciu súbory YAML. Ako vývojár Go môžete použiť nástroje ako balík yaml na analýzu a manipuláciu s údajmi YAML.

Pochopenie súboru YAML

Súbory YAML (YAML Ain't Markup Language) pozostávajú z párov kľúč-hodnota, zoznamov a vnorených štruktúr. Syntax YAML je navrhnutá tak, aby bola vizuálne príťažlivá a ľahko čitateľná. Vďaka tomu je obľúbenou voľbou pre konfiguračné súbory s Kubernetes a ďalšími nástroje na orchestráciu pomocou YAML.

Na rozdiel od iných dátových formátov, napr XML a JSONYAML sa pri reprezentácii hierarchie spolieha na odsadenie.

Takto môžete definovať základné polia pomocou YAML:

instagram viewer
názov:JohnLaň
Vek:30
email:[email protected]

Dvojbodka oddeľuje kľúč od jeho hodnoty, ktorou môže byť akýkoľvek platný dátový typ YAML vrátane reťazcov, čísel, boolovských hodnôt alebo vnorených štruktúr.

Zoznamy vám umožňujú reprezentovať zbierku hodnôt. Ak chcete definovať zoznam v YAML, použite spojovník, za ktorým nasleduje medzera pred každou položkou:

ovocie:
-jablko
-banán
-oranžová

Tu, ovocie je kľúč a riadky s pomlčkou definujú zoznam ovocia.

YAML tiež podporuje vnorené štruktúry, čo vám umožňuje reprezentovať komplexné hierarchie údajov:

osoba:
názov:JohnLaň
Vek:30
adresa:
ulica:123HlavnáSt
mesto:Anytown
krajina:USA

The osoba kľúč obsahuje ďalšiu množinu párov kľúč – hodnota, ktoré tvoria vnorenú štruktúru. The adresu kľúč má vlastnú množinu párov kľúč – hodnota.

Práca s YAML v Go

Go neposkytuje vstavané funkcie pre súbory YAML, existujú však balíky tretích strán, ktoré ich poskytujú.

The yaml balík je populárny balík na prácu so súbormi YAML. To poskytuje:

  • Funkcie analýzy a serializácie.
  • Podpora značiek YAML.
  • Komplexná zhoda so špecifikáciou YAML.
  • Jemná kontrola nad zoraďovaním a rozraďovaním.
  • Spracovanie chýb.
  • Kompatibilita s viacerými verziami YAML.

Otvorte terminál a spustite tento príkaz na inštaláciu balíka YAML pre váš projekt:

# nainštalujte verziu 3 balíka yaml
prejdite na stránku gopkg.in/yaml.v3

Po nainštalovaní balíka môžete použiť importovať na importovanie balíka do súborov Go.

importovať"gopkg.in/yaml.v3"

Môžete si vybrať viacero verzií YAML na základe verzie špecifikácie YAML, ktorú chcete použiť.

Čítanie a analýza dátových štruktúr YAML to Go

Jednou zo základných úloh, ktoré budete chcieť vykonať, je analýza dátových štruktúr YAML to Go. The yaml balík poskytuje jednoduché a pohodlné rozhranie API na tento účel.

Zvážte tieto údaje YAML:

# output.yaml

osoba:
názov:JohnLaň
Vek:30
email:[email protected]

Môžete definovať zodpovedajúcu štruktúru so zodpovedajúcimi názvami polí na analýzu údajov YAML do dátovej štruktúry Go pomocou yaml balík.

// Štruktúra osoby predstavuje kľúč osoby v YAML.
typu Osoba štrukturovať {
názov reťazec`yaml:"meno"`
Vek int`yaml:"vek"`
Email reťazec`yaml:"e-mail"`
}

The yaml Značky struct pomáhajú mapovať kľúče YAML na polia struct počas operácie analýzy.

Takto môžete analyzovať údaje YAML do dátovej štruktúry Go:

importovať (
"fmt"
"gopkg.in/yaml.v3"
"os"
)

funcHlavná() {
// prečítať súbor output.yaml
údaje, chyba := os. ReadFile("output.yaml")

ak chyba!= nula {
panika(chyba)
}

// vytvorí štruktúru osoby a deserializuje údaje do tejto štruktúry
var osoba Osoba

ak chyba := yaml. Unmarshal (údaje, &osoba); chyba!= nula {
panika(chyba)
}

// vytlačí polia do konzoly
fmt. Printf("Meno: %s\n", osoba. Názov)
fmt. Printf("Vek: %d\n", osoba. Vek)
fmt. Printf("E-mail: %s\n", osoba. email)
}

The Hlavná funkcia číta výstup.yaml súbor s ioutil balíka ReadFile funkciu. Potom vytvorí inštanciu súboru Osoba struct a analyzuje údaje do štruktúry s Unmaršal metóda yaml balík. The Hlavná funkcia vypíše polia z inštancie struct; tu je vysledok:

Vkladanie údajov do súboru YAML

Dátové štruktúry Go môžete použiť na vkladanie údajov do súborov YAML. Tu je návod, ako môžete vložiť údaje do súboru YAML s inštanciou súboru Osoba štruktúra:

funcHlavná() {
// Vytvorenie inštancie štruktúry Osoba so vzorovými údajmi
osoba := osoba{
Názov: "John Doe",
Vek: 30,
Email: "[email protected]",
}

// Serializácia štruktúry osoby do formátu YAML
údaje, chyba := yaml. Maršál (&osoba)

ak chyba!= nula {
panika(chyba)
}

// Zapíšte serializované údaje YAML do súboru s názvom "output.yaml"
chyba = os. WriteFile("output.yaml", údaje, 0644)

ak chyba!= nula {
panika(chyba)
}

fmt. Println("Údaje zapísané do output.yaml")
}

The osoba premenná je inštanciou premennej Osoba typ štruktúry. Použi maršal metóda yaml balík na konverziu štruktúry na YAML. Vezme inštanciu štruktúry a vráti reprezentáciu YAML a chybu.

Môžete použiť WriteFile funkciu os balík na zápis údajov YAML do vášho súboru (v tomto prípade výstup.yaml).

Po úspešnej serializácii údajov YAML a operácii zápisu, Hlavná funkcia vypíše správu do konzoly.

YAML môžete zaradiť a uvoľniť do máp, ako to robíte so štruktúrami.

Tu je príklad zoradenia a uvoľnenia údajov YAML s mapami:

balík Hlavná

importovať (
"fmt"
"gopkg.in/yaml.v3"
)

funcHlavná() {
// Údaje na zaraďovanie
údaje := mapa[reťazec]rozhranie{}{
"názov": "John Doe",
"Vek": 30,
"e-mail": "[email protected]",
}

// Zaradenie údajov do YAML
yamlData, chyba := yaml. maršál (údaje)

ak chyba!= nula {
fmt. Println("Chyba počas zaraďovania:", chyba)
vrátiť
}

fmt. Println("Zaradené údaje YAML:")
fmt. Println(reťazec(yamlData))

// Rozdelenie údajov YAML do mapy
var unmarshalledData mapa[reťazec]rozhranie{}
err = yaml. Unmarshal (yamlData, &unmarshalledData)

ak chyba!= nula {
fmt. Println("Chyba pri rozraďovaní:", chyba)
vrátiť
}

fmt. Println("\nZrušené údaje:")
fmt. Println (unmarshalledData)
}

Postup je rovnaký ako pri typy štruktúr, okrem toho, že na reprezentáciu údajov používate mapy. The Unmaršal a maršal metódy fungujú pre oba typy údajov.

Docker Compose používa na konfiguráciu súbory YAML

Práca so súbormi YAML v Go poskytuje výkonný a flexibilný prístup k správe konfiguračných údajov.

Jedným z prominentných prípadov použitia súborov YAML je Docker Compose, kde súbor YAML slúži ako konfigurácia na definovanie a správu aplikácií Docker s viacerými kontajnermi.

Docker Compose využíva jednoduchosť a čitateľnosť YAML na definovanie služieb, sietí, zväzkov a ďalších komponentov kontajnerových aplikácií, aby sa uľahčila orchestrácia kontajnerov.