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