Używając YAML, możesz pisać programy w Go, które współpracują z innymi przy użyciu formatu danych. Jest czytelny dla człowieka, więc łatwo się z nim pracuje.

YAML to popularny format serializacji danych czytelny dla człowieka. Język danych jest odpowiedni dla plików konfiguracyjnych, wymiany danych i przechowywania danych strukturalnych.

Wiele projektów opartych na Go, w tym Gqlgen i narzędzia do budowania, takie jak Docker-compose, używa plików YAML do konfiguracji. Jako programista Go możesz używać narzędzi, takich jak pakiet yaml, do analizowania danych YAML i manipulowania nimi.

Zrozumienie pliku YAML

Pliki YAML (YAML Ain't Markup Language) składają się z par klucz-wartość, list i struktur zagnieżdżonych. Składnia YAML została zaprojektowana tak, aby była atrakcyjna wizualnie i łatwa do odczytania. To sprawia, że ​​jest popularnym wyborem dla plików konfiguracyjnych, z Kubernetes i innymi narzędzia do orkiestracji przy użyciu YAML.

W przeciwieństwie do innych formatów danych, takich jak XML i JSON, YAML opiera się na wcięciach do reprezentowania hierarchii.

instagram viewer

Oto jak możesz zdefiniować podstawowe pola za pomocą YAML:

nazwa:JanŁania
wiek:30
e-mail:[email protected]

Dwukropek oddziela klucz od jego wartości, która może być dowolnym prawidłowym typem danych YAML, w tym ciągami znaków, liczbami, wartościami logicznymi lub strukturami zagnieżdżonymi.

Listy umożliwiają reprezentowanie zbioru wartości. Aby zdefiniować listę w YAML, użyj łącznika, po którym następuje spacja przed każdym elementem:

owoce:
-jabłko
-banan
-Pomarańczowy

Tutaj, owoce jest kluczem, a linie z łącznikiem określają listę owoców.

YAML obsługuje również struktury zagnieżdżone, umożliwiając reprezentowanie złożonych hierarchii danych:

osoba:
nazwa:JanŁania
wiek:30
adres:
ulica:123GłównyŚw
miasto:Dowolne miasto
kraj:USA

The osoba key zawiera inny zestaw par klucz-wartość, tworząc zagnieżdżoną strukturę. The adres key ma własny zestaw par klucz-wartość.

Praca z YAML w Go

Go nie zapewnia wbudowanej funkcjonalności dla plików YAML, ale istnieją pakiety innych firm, które to robią.

The yaml pakiet to popularny pakiet do pracy z plikami YAML. To zapewnia:

  • Funkcje analizowania i serializacji.
  • Obsługa tagów YAML.
  • Pełna zgodność ze specyfikacją YAML.
  • Precyzyjna kontrola nad ustawianiem i usuwaniem połączeń.
  • Obsługa błędów.
  • Zgodność z wieloma wersjami YAML.

Otwórz terminal i uruchom to polecenie, aby zainstalować pakiet YAML dla swojego projektu:

# zainstaluj wersję 3 pakietu yaml
przejdź do gopkg.in/yaml.v3

Po zainstalowaniu pakietu możesz użyć import oświadczenie, aby zaimportować pakiet do plików Go.

import"gopkg.in/yaml.v3"

Możesz wybrać wiele wersji YAML na podstawie wersji specyfikacji YAML, której chcesz użyć.

Odczytywanie i analizowanie struktur danych YAML to Go

Jednym z podstawowych zadań, które będziesz chciał wykonać, jest analizowanie struktur danych YAML to Go. The yaml pakiet zapewnia prosty, wygodny interfejs API do tego celu.

Rozważ te dane YAML:

# wyjście.yaml

osoba:
nazwa:JanŁania
wiek:30
e-mail:[email protected]

Możesz zdefiniować odpowiednią strukturę z pasującymi nazwami pól, aby przeanalizować dane YAML do struktury danych Go z yaml pakiet.

// Person struct reprezentuje klucz osoby w YAML.
typ Osoba struktura {
Nazwa strunowy`yaml:"nazwa"`
Wiek int`yaml:"wiek"`
E-mail strunowy`yaml: "e-mail"`
}

The yaml Tagi struktury pomagają mapować klucze YAML na pola struktury podczas operacji analizowania.

Oto jak przetworzyć dane YAML na strukturę danych Go:

import (
"fmt"
"gopkg.in/yaml.v3"
„os”
)

funkcjagłówny() {
// przeczytaj plik output.yaml
dane, błąd := os. OdczytPliku("wyjście.yaml")

Jeśli błąd!= zero {
panika(błądzić)
}

// tworzymy strukturę osobową i deserializujemy dane do tej struktury
rozm osoba Osoba

Jeśli błąd := yaml. Unmarshal (dane, &osoba); błąd!= zero {
panika(błądzić)
}

// wypisuje pola do konsoli
fmt. Drukujf("Imię: %s\n", osoba. Nazwa)
fmt. Drukujf(„Wiek: %d\n”, osoba. Wiek)
fmt. Drukujf("E-mail: %s\n", osoba. E-mail)
}

The główny funkcja odczytuje wyjście.yaml plik z iutil paczka Odczyt pliku funkcjonować. Następnie tworzy instancję pliku Osoba struct i analizuje dane do struktury za pomocą Niemarszałkowy metoda tzw yaml pakiet. The główny funkcja drukuje pola z instancji struktury; oto wynik:

Wstawianie danych do pliku YAML

Struktur danych Go można używać do wstawiania danych do plików YAML. Oto jak możesz wstawić dane do pliku YAML z instancją Osoba struktura:

funkcjagłówny() {
// Utwórz instancję struktury Person z przykładowymi danymi
osoba := Osoba{
Nazwa: "Nieznany z nazwiska",
Wiek: 30,
E-mail: [email protected],
}

// Serializacja struktury osoby do formatu YAML
dane, błąd: = yaml. Marszałek(&osoba)

Jeśli błąd!= zero {
panika(błądzić)
}

// Zapisz serializowane dane YAML do pliku o nazwie „output.yaml”
błąd = os. Zapisz plik("wyjście.yaml", dane, 0644)

Jeśli błąd!= zero {
panika(błądzić)
}

fmt. println(„Dane zapisane w pliku output.yaml”)
}

The osoba zmienna jest instancją Osoba typ struktury. Użyj Marszałek metoda tzw yaml package, aby przekonwertować strukturę na YAML. Przyjmuje instancję struktury i zwraca reprezentację YAML oraz błąd.

Możesz użyć Zapisz plik funkcja os package do zapisania danych YAML do twojego pliku (w tym przypadku wyjście.yaml).

Po pomyślnej serializacji danych YAML i operacji zapisu plik główny funkcja drukuje komunikat do konsoli.

YAML można organizować i anulować na mapach, tak jak w przypadku struktur.

Oto przykład organizowania i usuwania danych YAML za pomocą map:

pakiet główny

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

funkcjagłówny() {
// Dane do organizowania
dane := mapa[strunowy]interfejs{}{
"nazwa": "Nieznany z nazwiska",
"wiek": 30,
"e-mail": [email protected],
}

// Kierowanie danych do YAML
yamlData, błąd:= yaml. Marszałek (dane)

Jeśli błąd!= zero {
fmt. println(„Błąd podczas organizowania:”, błąd)
powrót
}

fmt. println(„Zorganizowane dane YAML:”)
fmt. println(strunowy(dane yaml))

// Przekształcanie danych YAML w mapę
rozm unmarshalledData mapa[strunowy]interfejs{}
błąd = yaml. Unmarshal (yamlData, &unmarshalledData)

Jeśli błąd!= zero {
fmt. println(„Błąd podczas usuwania ze zbioru:”, błąd)
powrót
}

fmt. println("\nNiezorganizowane dane:")
fmt. Println (unmarshalledData)
}

Procedura jest taka sama jak dla typy struktur, z wyjątkiem tego, że używasz map do reprezentacji danych. The Niemarszałkowy I Marszałek metody działają dla obu typów danych.

Docker Compose używa plików YAML do konfiguracji

Praca z plikami YAML w Go zapewnia wydajne i elastyczne podejście do zarządzania danymi konfiguracyjnymi.

Jednym z wyróżniających się przypadków użycia plików YAML jest Docker Compose, w którym plik YAML służy jako konfiguracja do definiowania wielokontenerowych aplikacji Docker i zarządzania nimi.

Docker Compose wykorzystuje prostotę i czytelność YAML do definiowania usług, sieci, woluminów i innych komponentów aplikacji kontenerowych, aby ułatwić orkiestrację kontenerów.