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ů.