Pomocí YAML můžete psát programy Go, které spolupracují s ostatními pomocí datového formátu. Je čitelný pro člověka, takže se s ním snadno pracuje.
YAML je populární lidsky čitelný formát pro serializaci dat. Datový jazyk je vhodný pro konfigurační soubory, výměnu dat a ukládání strukturovaných dat.
Mnoho projektů založených na Go, včetně Gqlgen a nástrojů pro vytváření, jako je Docker-compose, používá ke konfiguraci soubory YAML. Jako vývojář Go můžete používat nástroje jako balíček yaml k analýze a manipulaci s daty YAML.
Pochopení souboru YAML
Soubory YAML (YAML Ain't Markup Language) se skládají z párů klíč-hodnota, seznamů a vnořených struktur. Syntaxe YAML je navržena tak, aby byla vizuálně přitažlivá a snadno čitelná. Díky tomu je oblíbenou volbou pro konfigurační soubory s Kubernetes a dalšími nástroje pro orchestraci pomocí YAML.
Na rozdíl od jiných datových formátů, jako je XML a JSON, YAML se spoléhá na odsazení, které představuje hierarchii.
Zde je návod, jak můžete definovat základní pole pomocí YAML:
název:JohnSrna
stáří:30
e-mailem:[email protected]
Dvojtečka odděluje klíč od jeho hodnoty, což může být jakýkoli platný datový typ YAML včetně řetězců, čísel, booleanů nebo vnořených struktur.
Seznamy umožňují reprezentovat kolekci hodnot. Chcete-li definovat seznam v YAML, použijte pomlčku následovanou mezerou před každou položkou:
ovoce:
-jablko
-banán
-oranžový
Tady, ovoce je klíč a řádky s pomlčkou definují seznam ovoce.
YAML také podporuje vnořené struktury, což vám umožňuje reprezentovat komplexní hierarchie dat:
osoba:
název:JohnSrna
stáří:30
adresa:
ulice:123HlavníSvatý
město:Anytown
země:USA
The osoba klíč obsahuje další sadu párů klíč-hodnota, které tvoří vnořenou strukturu. The adresa klíč má vlastní sadu párů klíč–hodnota.
Práce s YAML v Go
Go neposkytuje vestavěné funkce pro soubory YAML, ale existují balíčky třetích stran, které je poskytují.
The yaml balík je oblíbený balíček pro práci se soubory YAML. Poskytuje:
- Funkce analýzy a serializace.
- Podpora značek YAML.
- Komplexní soulad se specifikací YAML.
- Jemná kontrola nad řazením a rozřazováním.
- Vypořádání se s chybou.
- Kompatibilita s více verzemi YAML.
Otevřete terminál a spusťte tento příkaz pro instalaci balíčku YAML pro váš projekt:
# nainstalujte verzi 3 balíčku yaml
přejděte na gopkg.in/yaml.v3
Po instalaci balíčku můžete použít import příkaz k importu balíčku do souborů Go.
import"gopkg.in/yaml.v3"
Můžete si vybrat více verzí YAML na základě verze specifikace YAML, kterou chcete použít.
Čtení a analýza datových struktur YAML to Go
Jedním ze základních úkolů, které budete chtít provést, je analýza datových struktur YAML to Go. The yaml balíček poskytuje jednoduché a pohodlné rozhraní API, jak to udělat.
Zvažte tato data YAML:
# output.yaml
osoba:
název:JohnSrna
stáří:30
e-mailem:[email protected]
Můžete definovat odpovídající strukturu s odpovídajícími názvy polí a analyzovat data YAML do datové struktury Go s yaml balík.
// Struktura osoby představuje klíč osoby v YAML.
typ Osoba strukturovat {
název tětiva`yaml:"jméno"`
Stáří int`yaml:"věk"`
E-mailem tětiva`yaml:"e-mail"`
}
The yaml tagy struct pomáhají mapovat klíče YAML na pole struct během operace analýzy.
Zde je návod, jak můžete analyzovat data YAML do datové struktury Go:
import (
"fmt"
"gopkg.in/yaml.v3"
"os"
)funchlavní() {
// čtení souboru output.yaml
data, chyba := os. ReadFile("output.yaml")-li chyba!= nula {
panika(chybovat)
}
// vytvoří strukturu osoby a deserializuje data do této struktury
var osoba Osoba
-li chyba := yaml. Unmarshal (data, &person); chyba!= nula {
panika(chybovat)
}
// vytiskne pole do konzole
fmt. Printf("Jméno: %s\n", osoba. Název)
fmt. Printf("Věk: %d\n", osoba. Stáří)
fmt. Printf("E-mail: %s\n", osoba. E-mailem)
}
The hlavní funkce čte výstup.yaml soubor s ioutil balíček ReadFile funkce. Poté vytvoří instanci souboru Osoba struct a analyzuje data do struktury s Unmaršál metoda yaml balík. The hlavní funkce vytiskne pole z instance struct; tady je výsledek:
Vkládání dat do souboru YAML
K vkládání dat do souborů YAML můžete použít datové struktury Go. Zde je návod, jak můžete vložit data do souboru YAML s instancí souboru Osoba struktura:
funchlavní() {
// Vytvoří instanci struktury Osoba s ukázkovými daty
osoba := osoba{
Název: "John Doe",
Stáří: 30,
E-mailem: "[email protected]",
}// Serializuje strukturu osoby do formátu YAML
data, chyba := yaml. Maršál (&osoba)-li chyba!= nula {
panika(chybovat)
}// Zapište serializovaná data YAML do souboru s názvem "output.yaml"
chyba = os. WriteFile("output.yaml", data, 0644)-li chyba!= nula {
panika(chybovat)
}
fmt. Println("Data zapsaná do output.yaml")
}
The osoba proměnná je instancí třídy Osoba typ struktury. Použijte Maršál metoda yaml balíček pro převod struktury na YAML. Vezme instanci struktury a vrátí reprezentaci YAML a chybu.
Můžete použít WriteFile funkce os balíček pro zápis dat YAML do vašeho souboru (v tomto případě výstup.yaml).
Po úspěšné serializaci dat YAML a operaci zápisu, hlavní funkce vytiskne zprávu do konzole.
YAML můžete zařazovat a rozdružovat do map stejně jako u struktur.
Zde je příklad zařazování a vyřazování dat YAML s mapami:
balík hlavní
import (
"fmt"
"gopkg.in/yaml.v3"
)funchlavní() {
// Data pro zařazování
údaje := mapa[tětiva]rozhraní{}{
"název": "John Doe",
"stáří": 30,
"e-mailem": "[email protected]",
}// Zařazování dat do YAML
yamlData, err := yaml. maršál (data)-li chyba!= nula {
fmt. Println("Chyba během zařazování:", chyba)
vrátit se
}fmt. Println("Zařazená data YAML:")
fmt. Println(tětiva(yamlData))// Rozdělení dat YAML do mapy
var unmarshalledData mapa[tětiva]rozhraní{}
err = yaml. Unmarshal (yamlData, &unmarshalledData)-li chyba!= nula {
fmt. Println("Chyba při vyřazování:", chyba)
vrátit se
}
fmt. Println("\nUvolněná data:")
fmt. Println (unmarshalledData)
}
Postup je stejný jako u typy struktur, kromě toho, že pro reprezentaci dat používáte mapy. The Unmaršál a Maršál metody fungují pro oba typy dat.
Docker Compose používá pro konfiguraci soubory YAML
Práce se soubory YAML v Go poskytuje výkonný a flexibilní přístup ke správě konfiguračních dat.
Jedním z prominentních případů použití souborů YAML je Docker Compose, kde soubor YAML slouží jako konfigurace pro definování a správu vícekontejnerových aplikací Docker.
Docker Compose využívá jednoduchost a čitelnost YAML k definování služeb, sítí, svazků a dalších komponent kontejnerových aplikací, aby usnadnila orchestraci kontejnerů.