YAML: n avulla voit kirjoittaa Go-ohjelmia, jotka toimivat yhdessä muiden kanssa datamuotoa käyttämällä. Se on ihmisten luettavissa, joten sen kanssa on niin helppo työskennellä.

YAML on suosittu ihmisten luettavissa oleva tietojen serialisointimuoto. Tietokieli soveltuu konfigurointitiedostoihin, tiedonvaihtoon ja strukturoidun tiedon tallentamiseen.

Monet Go-pohjaiset projektit, mukaan lukien Gqlgen ja rakennustyökalut, kuten Docker-compose, käyttävät YAML-tiedostoja määritykseen. Go-kehittäjänä voit käyttää työkaluja, kuten yaml-pakettia, jäsentääksesi ja käsitelläksesi YAML-tietoja.

YAML-tiedoston ymmärtäminen

YAML (YAML Ain't Markup Language) -tiedostot koostuvat avainarvopareista, luetteloista ja sisäkkäisistä rakenteista. YAML-syntaksi on suunniteltu visuaalisesti houkuttelevaksi ja helppolukuiseksi. Tämä tekee siitä suositun määritystiedostojen valinnan Kubernetesin ja muiden kanssa orkestrointityökalut YAML: lla.

Toisin kuin muut tietomuodot, kuten XML ja JSON, YAML luottaa sisennykseen edustamaan hierarkiaa.

instagram viewer

Näin voit määrittää peruskentät YAML: lla:

nimi:JohnDoe
ikä:30
sähköposti:[email protected]

Kaksoispiste erottaa avaimen sen arvosta, joka voi olla mikä tahansa kelvollinen YAML-tietotyyppi, mukaan lukien merkkijonot, numerot, boolean-arvot tai sisäkkäiset rakenteet.

Listojen avulla voit edustaa kokoelmaa arvoja. Jos haluat määrittää luettelon YAML: ssä, käytä yhdysviivaa ja välilyöntiä ennen jokaista kohdetta:

hedelmät:
-omena
-banaani
-oranssi

Tässä, hedelmiä on avain, ja tavuviivat määrittelevät luettelon hedelmistä.

YAML tukee myös sisäkkäisiä rakenteita, joiden avulla voit esittää monimutkaisia ​​tietohierarkioita:

henkilö:
nimi:JohnDoe
ikä:30
osoite:
katu:123MainSt
kaupunki:Anytown
maa:USA

The henkilö avain sisältää toisen joukon avain-arvo-pareja, jotka muodostavat sisäkkäisen rakenteen. The osoite avaimella on oma joukko avainarvopareja.

Työskentely YAML: n kanssa Gossa

Go ei tarjoa sisäänrakennettuja toimintoja YAML-tiedostoille, mutta on olemassa kolmannen osapuolen paketteja, jotka tarjoavat.

The yaml paketti on suosittu paketti YAML-tiedostojen käsittelyyn. Se tarjoaa:

  • Jäsennys- ja serialisointiominaisuudet.
  • Tuki YAML-tageille.
  • Kattava YAML-spesifikaatioiden noudattaminen.
  • Tarkka hallinta järjestyksen ja erottelun suhteen.
  • Virheen käsittely.
  • Yhteensopiva useiden YAML-versioiden kanssa.

Avaa pääte ja suorita tämä komento asentaaksesi YAML-paketin projektiisi:

# asenna yaml-paketin versio 3
hanki gopkg.in/yaml.v3

Paketin asennuksen jälkeen voit käyttää tuonti lausekkeen tuodaksesi paketin Go-tiedostoihisi.

tuonti"gopkg.in/yaml.v3"

Voit valita useita YAML-versioita sen YAML-määrittelyn version perusteella, jota haluat käyttää.

YAML to Go -tietorakenteiden lukeminen ja jäsentäminen

Yksi tärkeä tehtävä, jonka haluat suorittaa, on jäsentää YAML to Go -tietorakenteita. The yaml paketti tarjoaa yksinkertaisen ja kätevän API: n tähän.

Harkitse näitä YAML-tietoja:

# output.yaml

henkilö:
nimi:JohnDoe
ikä:30
sähköposti:[email protected]

Voit määrittää vastaavan rakenteen vastaavilla kenttien nimillä jäsentääksesi YAML-tiedot Go-tietorakenteeksi yaml paketti.

// Henkilörakenne edustaa henkilöavainta YAML: ssa.
tyyppi Henkilö struct {
Nimi merkkijono`yaml:"nimi"`
Ikä int`yaml:"ikä"`
Sähköposti merkkijono`yaml:"sähköposti"`
}

The yaml struct-tunnisteet auttavat yhdistämään YAML-avaimet struct-kenttiin jäsennystoiminnon aikana.

Näin voit jäsentää YAML-tiedot Go-tietorakenteeksi:

tuonti (
"fmt"
"gopkg.in/yaml.v3"
"os"
)

funcpää() {
// lue output.yaml-tiedosto
data, err := os. ReadFile("output.yaml")

jos virhe! = nolla {
paniikki(err)
}

// luo henkilörakenne ja deserialoi tiedot kyseiseen rakenteeseen
var henkilö Henkilö

jos err := yaml. Unmarshal (data, &person); virhe! = nolla {
paniikki(err)
}

// tulostaa kentät konsoliin
fmt. Printf("Nimi: %s\n", henkilö. Nimi)
fmt. Printf("Ikä: %d\n", henkilö. Ikä)
fmt. Printf("Sähköposti: %s\n", henkilö. sähköposti)
}

The pää toiminto lukee output.yaml tiedosto kanssa ioutil paketteja Lue tiedosto toiminto. Sitten se luo esiintymän Henkilö struct ja jäsentää tiedot rakenteen kanssa Unmarsalkka menetelmä yaml paketti. The pää funktio tulostaa kentät struct-ilmentymästä; tässä tulos:

Tietojen lisääminen YAML-tiedostoon

Voit käyttää Go-tietorakenteita tietojen lisäämiseen YAML-tiedostoihin. Näin voit lisätä tietoja YAML-tiedostoon Henkilö rakenne:

funcpää() {
// Luo henkilö-rakenteen esiintymä esimerkkitiedoilla
henkilö := henkilö{
Nimi: "John Doe",
Ikä: 30,
Sähköposti: "[email protected]",
}

// Sarjaa henkilörakenne YAML-muotoon
data, err := yaml. marsalkka (&henkilö)

jos virhe! = nolla {
paniikki(err)
}

// Kirjoita sarjoitetut YAML-tiedot tiedostoon nimeltä "output.yaml"
err = os. WriteFile("output.yaml", data, 0644)

jos virhe! = nolla {
paniikki(err)
}

fmt. Println("Data kirjoitettu tiedostoon output.yaml")
}

The henkilö muuttuja on esimerkki Henkilö rakenteen tyyppi. Käytä Marsalkka menetelmä yaml paketti muuntaaksesi rakenteen YAML: ksi. Se ottaa rakenteen ilmentymän ja palauttaa YAML-esityksen ja virheen.

Voit käyttää Kirjoita tiedosto toiminto os paketti YAML-tietojen kirjoittamiseksi tiedostoosi (tässä tapauksessa output.yaml).

Onnistuneen YAML-tietojen serialisoinnin ja kirjoitustoiminnon jälkeen pää toiminto tulostaa viestin konsoliin.

Voit järjestää YAML: n ja purkaa karttoja samalla tavalla kuin rakenteiden kanssa.

Tässä on esimerkki YAML-tietojen yhdistämisestä ja jaon purkamisesta karttojen avulla:

paketti pää

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

funcpää() {
// Tiedot järjestystä varten
dataa := kartta[merkkijono]käyttöliittymä{}{
"nimi": "John Doe",
"ikä": 30,
"sähköposti": "[email protected]",
}

// Tietojen yhdistäminen YAML: iin
yamlData, err := yaml. marsalkka (tiedot)

jos virhe! = nolla {
fmt. Println("Virhe järjestyksen aikana:", virhe)
palata
}

fmt. Println("Yhdistetty YAML-tiedot:")
fmt. Println(merkkijono(yamlData))

// YAML-tietojen purkaminen kartaksi
var unmarshalledData kartta[merkkijono]käyttöliittymä{}
err = yaml. Unmarshal (yamlData, &unmarshalledData)

jos virhe! = nolla {
fmt. Println("Virhe purettaessa:", virhe)
palata
}

fmt. Println("\nJärjestämättömät tiedot:")
fmt. Println (unmarshalled Data)
}

Prosessi on sama kuin rakennetyypit, paitsi että käytät karttoja tietojen esittämiseen. The Unmarsalkka ja Marsalkka menetelmät toimivat molemmille tietotyypeille.

Docker Compose käyttää YAML-tiedostoja määritykseen

YAML-tiedostojen työskentely Gossa tarjoaa tehokkaan ja joustavan lähestymistavan määritystietojen hallintaan.

Yksi näkyvä YAML-tiedostojen käyttötapa on Docker Compose, jossa YAML-tiedosto toimii kokoonpanona monisäilöisten Docker-sovellusten määrittelyssä ja hallinnassa.

Docker Compose hyödyntää YAML: n yksinkertaisuutta ja luettavuutta palveluiden, verkkojen, volyymien ja muiden konttisovellusten komponenttien määrittämisessä, mikä tekee kontin orkestroinnista helppoa.