Go:
Att Arbeta med TOML
Hur man gör:
För att börja arbeta med TOML i Go måste du först inkludera ett bibliotek som kan tolka TOML-filer eftersom Golangs standardbibliotek inte stöder TOML nativt. Paketet BurntSushi/toml
är ett populärt val för detta. Se först till att installera det:
go get github.com/BurntSushi/toml
Här är ett enkelt exempel på hur man använder det. Anta att du har en konfigurationsfil med namnet config.toml
med följande innehåll:
title = "Exempel på TOML"
[database]
server = "192.168.1.1"
ports = [ 8001, 8001, 8002 ]
connection_max = 5000
enabled = true
Nu måste du skapa en Go-struktur som speglar TOML-strukturen:
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("Titel: %s\n", config.Title)
fmt.Printf("Databasserver: %s\n", config.Database.Server)
}
Exempelutdata:
Titel: Exempel på TOML
Databasserver: 192.168.1.1
Fördjupning
TOML skapades av Tom Preston-Werner, en av medgrundarna till GitHub, för att erbjuda ett rakt på sak filformat för konfiguration som enkelt kan mappas till en hashtabell och förstås med en ögonkastning utan förkunskaper om formatet. Det står i kontrast till JSON eller YAML som, även om de också är brett använda, kan vara mindre användarvänliga för konfigurationsfiler på grund av klammerparenteser, citattecken och indenteringsproblem.
Paketet BurntSushi/toml
i Go är ett robust bibliotek som inte bara tillåter avkodning utan också kodning av TOML-filer, vilket gör det till ett mångsidigt val för applikationer som behöver läsa och skriva konfigurationsfiler i detta format. Man bör dock notera att med framsteg i tekniker och introduktionen av nya Go-versioner har alternativ som pelletier/go-toml
framträtt, som erbjuder förbättrad prestanda och ytterligare funktioner som trädsmanipulation och frågestöd.
Medan TOML är ett utmärkt val för många applikationer, beroende på applikationskonfigurationens komplexitet och personliga eller teampreferenser, kan andra format som YAML eller JSON vara mer lämpliga, särskilt om konfigurationen kräver mer komplexa datastrukturer som TOML:s ordrika natur kanske inte elegant fångar. Icke desto mindre, för enkel, läsbar och lättredigerbar konfiguration är TOML, tillsammans med Gos starka typsystem och de nämnda biblioteken, ett utmärkt val.