Konfigurationsdateien lesen
YAML, JSON und TOML laden
Konfigurationsdateien lesen ist eine kostenlose Go Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Go Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Go Academy-Kurs umfasst insgesamt 4 Lektionen.
Konfiguration gehört nicht in den Code
Werte wie Ports, Hostnamen und Timeouts direkt in Ihrem Go-Programm zu hinterlegen, ist fragil. Viper ist die De-facto-Konfigurationsbibliothek für Go: Sie liest Einstellungen aus Dateien, Umgebungsvariablen, Flags und entfernten Speichern.
In dieser Lektion laden Sie die Konfiguration aus einer Datei auf der Festplatte.
Welche Formate Viper liest
Viper unterstützt standardmäßig viele Formate:
- YAML (
.yaml/.yml) - JSON (
.json) - TOML (
.toml) - HCL-, INI- und Java-Properties-Dateien
Sie wählen das Format mit SetConfigType aus, oder Viper leitet es aus der Dateierweiterung ab.
Viper installieren und importieren
Fügen Sie Viper zu Ihrem Modul hinzu und importieren Sie es:
go get github.com/spf13/viperimport "github.com/spf13/viper"
Da Viper eine externe Abhängigkeit ist, können Snippets, die es importieren, in diesem Lesson-Player nicht ausgeführt werden. Wo möglich, simulieren wir das Verhalten mit der Standardbibliothek.
import "github.com/spf13/viper"Viper mitteilen, wo gesucht werden soll
Konfigurieren Sie Dateinamen, Dateityp und Suchpfade, bevor Sie die Datei lesen:
viper.SetConfigName("config")legt den Basisnamen ohne Erweiterung festviper.SetConfigType("yaml")legt das Format festviper.AddConfigPath(".")fügt ein zu durchsuchendes Verzeichnis hinzu
viper.SetConfigName("config")
viper.SetConfigType("yaml")
viper.AddConfigPath(".")
viper.AddConfigPath("/etc/myapp")Die Datei lesen
Rufen Sie viper.ReadInConfig() auf, um die Datei zu laden. Sie erhalten einen Fehler, den Sie prüfen müssen:
- Eine fehlende Datei gibt einen
ConfigFileNotFoundErrorzurück - Eine fehlerhaft formatierte Datei gibt einen Parse-Fehler zurück
if err := viper.ReadInConfig(); err != nil {
log.Fatalf("failed to read config: %v", err)
}Beispiel einer YAML-Konfiguration
Stellen Sie sich eine config.yaml wie diese vor. Viper wandelt verschachtelte Schlüssel mithilfe von Punkten in eine flache Struktur um, sodass der Port zu server.port wird.
server:
port: 8080
host: "localhost"
debug: trueTypisierte Werte abrufen
Viper stellt typisierte Getter bereit, sodass Sie keine manuellen Konvertierungen vornehmen müssen:
viper.GetInt("server.port")viper.GetString("server.host")viper.GetBool("debug")
port := viper.GetInt("server.port")
host := viper.GetString("server.host")
debug := viper.GetBool("debug")
fmt.Println(host, port, debug)JSON funktioniert genauso
Beim Wechsel zu JSON ändern sich nur der Dateiinhalt und der Konfigurationstyp. Dieselben Schlüsselpfade und Getter gelten weiterhin. Diese Portabilität ist ein Grund für die Beliebtheit von Viper: Ihrem Code ist egal, welches Format das Betriebsteam ausgewählt hat.
{
"server": { "port": 8080, "host": "localhost" },
"debug": true
}Auch TOML wird unterstützt
TOML ist im Go-Ökosystem weit verbreitet, da viele CLIs es verwenden. Dieselben verschachtelten Schlüssel werden auf Pfade mit Punkten abgebildet.
[server]
port = 8080
host = "localhost"
debug = trueJSON mit der Standardbibliothek parsen
Damit Sie das Prinzip in der Praxis sehen, wird hier eine JSON-Konfiguration mit einfachem Go ohne Viper geparst. Dazu wird nur encoding/json in eine Map eingelesen. Viper selbst arbeitet intern ebenfalls mit einer generischen Map.
package main
import (
"encoding/json"
"fmt"
)
func main() {
raw := "{\"port\":8080,\"host\":\"localhost\"}"
var c map[string]any
if err := json.Unmarshal([]byte(raw), &c); err != nil {
panic(err)
}
fmt.Printf("%v:%v\n", c["host"], c["port"])
}Ausführbar: In eine Map einlesen
Dieses eigenständige Programm parst eine JSON-Konfiguration in eine generische Map und gibt Werte aus. Damit bildet es nach, was Viper intern für JSON tut.
package main
import (
"encoding/json"
"fmt"
)
func main() {
raw := "{\"port\":8080,\"host\":\"localhost\"}"
var m map[string]any
json.Unmarshal([]byte(raw), &m)
fmt.Println("host:", m["host"])
fmt.Println("port:", m["port"])
}Kurzer Test
Testen Sie Ihr Verständnis davon, wie Viper Konfigurationsdateien liest.
Zusammenfassung
Sie haben gelernt, wie Viper Konfigurationsdateien liest:
- Es unterstützt YAML, JSON und TOML transparent
- Konfigurieren Sie es mit
SetConfigName,SetConfigTypeundAddConfigPath ReadInConfig()lädt die Datei und gibt einen Fehler zurück- Typisierte Getter wie
GetIntundGetStringlesen Werte anhand eines Schlüssels mit Punkten
Als Nächstes: Konfiguration mit Umgebungsvariablen überschreiben.
Häufig gestellte Fragen
Ist die Lektion „Konfigurationsdateien lesen“ kostenlos?
Ja — der vollständige Text von „Konfigurationsdateien lesen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Go Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Go Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Konfigurationsdateien lesen“?
YAML, JSON und TOML laden Du übst Go Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Go Academy zu starten?
Keine Vorkenntnisse erforderlich. Go Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.
Wie lange dauert die Lektion „Konfigurationsdateien lesen“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Go Academy-Lektion Code schreiben und ausführen?
Ja. Jede Go Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Konfigurationsdateien lesen
- Umgebungsvariablen
- Standardwerte und Überwachung
- An Structs binden