0Pricing
Go Academy · Lezione

Leggere file di configurazione

Caricare YAML, JSON e TOML

Leggere file di configurazione è una lezione Go Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Go Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Go Academy include 4 lezioni in totale.

La configurazione vive al di fuori del codice

Codificare direttamente nel programma Go valori come porte, nomi host e timeout è fragile. Viper è la libreria di configurazione de facto per Go: legge le impostazioni da file, variabili d'ambiente, flag e archivi remoti.

In questa lezione caricherà la configurazione da un file sul disco.

Quali formati legge Viper

Viper supporta molti formati senza configurazioni aggiuntive:

  • YAML (.yaml / .yml)
  • JSON (.json)
  • TOML (.toml)
  • file HCL, INI e delle proprietà Java

È possibile scegliere il formato con SetConfigType, oppure Viper lo deduce dall'estensione del file.

Installazione e importazione di Viper

Aggiunga Viper al modulo e lo importi:

  • go get github.com/spf13/viper
  • import "github.com/spf13/viper"

Poiché Viper è una dipendenza esterna, i frammenti che la importano non possono essere eseguiti nel lettore di questa lezione. Quando possibile, ne simuliamo il comportamento usando la libreria standard.

import "github.com/spf13/viper"

Indicare a Viper dove cercare

Prima di leggere il file, configuri il nome, il tipo e i percorsi di ricerca:

  • viper.SetConfigName("config") imposta il nome di base, senza estensione
  • viper.SetConfigType("yaml") imposta il formato
  • viper.AddConfigPath(".") aggiunge una directory alla ricerca
viper.SetConfigName("config")
viper.SetConfigType("yaml")
viper.AddConfigPath(".")
viper.AddConfigPath("/etc/myapp")

Lettura del file

Chiami viper.ReadInConfig() per caricare il file. Il metodo restituisce un errore che deve essere verificato:

  • Un file mancante restituisce un ConfigFileNotFoundError
  • Un file non valido restituisce un errore di analisi
if err := viper.ReadInConfig(); err != nil {
    log.Fatalf("failed to read config: %v", err)
}

Un esempio di configurazione YAML

Immagini un file config.yaml come questo. Viper appiattisce le chiavi annidate usando i punti, quindi la porta diventa server.port.

server:
  port: 8080
  host: "localhost"
debug: true

Ottenere valori tipizzati

Viper espone getter tipizzati, così non è necessario effettuare conversioni manuali:

  • 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 funziona allo stesso modo

Passare a JSON modifica solo il contenuto del file e il tipo di configurazione. Si applicano gli stessi percorsi delle chiavi e gli stessi getter. Questa portabilità spiega la popolarità di Viper: al codice non importa quale formato abbia scelto il team operativo.

{
  "server": { "port": 8080, "host": "localhost" },
  "debug": true
}

È supportato anche TOML

TOML è comune nell'ecosistema Go, dove molte CLI lo utilizzano. Le stesse chiavi annidate corrispondono a percorsi separati da punti.

[server]
port = 8080
host = "localhost"

debug = true

Analizzare JSON con la libreria standard

Per vedere il concetto all'opera, ecco come analizzare davvero una configurazione JSON con il solo Go standard, usando encoding/json per ottenere una map (Viper stessa utilizza internamente una map generica).

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"])
}

Eseguibile: lettura in una map

Questo programma autonomo analizza la configurazione JSON in una map generica e ne stampa i valori, riproducendo ciò che Viper fa internamente con JSON.

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"])
}

Verifica rapida

Verifichi la propria comprensione della lettura dei file di configurazione con Viper.

Riepilogo

Ha imparato come Viper legge i file di configurazione:

  • Supporta in modo trasparente YAML, JSON e TOML
  • Si configura con SetConfigName, SetConfigType, AddConfigPath
  • ReadInConfig() carica il file e restituisce un errore
  • Getter tipizzati come GetInt e GetString leggono i valori tramite chiavi separate da punti

Prossimo argomento: sovrascrivere la configurazione con variabili d'ambiente.

Domande Frequenti

La lezione «Leggere file di configurazione» è gratuita?

Sì — il testo completo di «Leggere file di configurazione» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Go Academy, passa a CoddyKit PRO. Il corso Go Academy include 4 lezioni in totale.

Cosa imparerò in «Leggere file di configurazione»?

Caricare YAML, JSON e TOML Eserciti Go Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Go Academy?

Non è richiesta alcuna esperienza precedente. Go Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.

Quanto tempo richiede la lezione «Leggere file di configurazione»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Go Academy?

Sì. Ogni lezione Go Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Leggere file di configurazione
  2. Variabili d'ambiente
  3. Valori predefiniti e monitoraggio
  4. Associare agli struct
← Torna a Go Academy