Go:
TOML:n kanssa työskentely

Kuinka:

Aloittaaksesi työskentelyn TOML:n kanssa Go:ssa, sinun on ensin sisällytettävä kirjasto, joka osaa jäsentää TOML-tiedostoja, sillä Go:n vakio kirjasto ei natiivisti tue TOML:ää. BurntSushi/toml -paketti on suosittu valinta tähän. Ensiksi, varmista että asennat sen:

go get github.com/BurntSushi/toml

Tässä on yksinkertainen esimerkki sen käytöstä. Oletetaan, että sinulla on konfiguraatiotiedosto nimeltä config.toml, jossa on seuraava sisältö:

title = "TOML Esimerkki"

[database]
server = "192.168.1.1"
ports = [ 8001, 8001, 8002 ]
connection_max = 5000
enabled = true

Nyt, sinun täytyy luoda Go-rakenne, joka heijastaa TOML-rakennetta:

package main

import (
    "fmt"
    "github.com/BurntSushi/toml"
)

type Config struct {
    Title    string
    Database Database `toml:"database"`
}

type Database struct {
    Server        string
    Ports         []int
    ConnectionMax int `toml:"connection_max"`
    Enabled       bool
}

func main() {
    var config Config
    if _, err := toml.DecodeFile("config.toml", &config); err != nil {
        fmt.Println(err)
        return
    }
    fmt.Printf("Otsikko: %s\n", config.Title)
    fmt.Printf("Tietokannan palvelin: %s\n", config.Database.Server)
}

Näyte tuloste:

Otsikko: TOML Esimerkki
Tietokannan palvelin: 192.168.1.1

Syväsukellus

TOML:n loi Tom Preston-Werner, yksi GitHubin perustajista, tarjoamaan suoraviivaista konfiguraatiotiedoston formaattia, joka voidaan helposti karttaa hajautustauluun ja ymmärtää hetkessä ilman aikaisempaa formaatin tuntemusta. Se eroaa JSON:ista tai YAML:stä, jotka vaikka nekin ovat laajasti käytössä, voivat olla vähemmän ihmisystävällisiä konfiguraatiotiedostoissa sulkujen, lainausmerkkien ja sisennyksen ongelmien vuoksi.

BurntSushi/toml-paketti Go:ssa on vankka kirjasto, joka ei ainoastaan mahdollista dekoodausta, vaan myös TOML-tiedostojen enkoodausta, tehden siitä monipuolisen valinnan sovelluksille, jotka tarvitsevat lukea ja kirjoittaa konfiguraatiotiedostoja tässä formaatissa. Kuitenkin, tekniikoiden edetessä ja uusien Go-versioiden myötä, vaihtoehtoja kuten pelletier/go-toml on ilmestynyt, tarjoten paranneltua suorituskykyä ja lisäominaisuuksia kuten puurakenteiden manipulointia ja kyselytukea.

Vaikka TOML onkin loistava valinta monille sovelluksille, sovelluksen konfiguraation monimutkaisuudesta ja henkilökohtaisista tai tiimin mieltymyksistä riippuen, muut formaatit kuten YAML tai JSON saattavat olla paremmin sopivia, erityisesti, jos konfiguraatio vaatii monimutkaisempia tietorakenteita, joita TOML:n yksityiskohtainen luonne ei ehkä tyylikkäästi vangitse. Siitä huolimatta, suoraviivaisten, helposti luettavien ja muokattavien konfiguraatioiden osalta, TOML yhdessä Go:n vahvan tyyppijärjestelmän ja edellä mainittujen kirjastojen kanssa on erinomainen valinta.