0Pricing
Go Academy · Lektion

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/viper
  • import "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 fest
  • viper.SetConfigType("yaml") legt das Format fest
  • viper.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 ConfigFileNotFoundError zurü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: true

Typisierte 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 = true

JSON 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, SetConfigType und AddConfigPath
  • ReadInConfig() lädt die Datei und gibt einen Fehler zurück
  • Typisierte Getter wie GetInt und GetString lesen 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

  1. Konfigurationsdateien lesen
  2. Umgebungsvariablen
  3. Standardwerte und Überwachung
  4. An Structs binden
← Zurück zu Go Academy