0Pricing
Go Academy · Lección

Lectura de archivos de configuración

Cargue YAML, JSON y TOML

Lectura de archivos de configuración es una lección gratuita de Go Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Go Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Go Academy incluye 4 lecciones en total.

La configuración vive fuera del código

Codificar directamente valores como puertos, nombres de host y tiempos de espera en su programa de Go es frágil. Viper es la biblioteca de configuración de facto para Go: lee ajustes de archivos, variables de entorno, flags y almacenes remotos.

En esta lección cargará la configuración desde un archivo en el disco.

Formatos que lee Viper

Viper admite muchos formatos de forma nativa:

  • YAML (.yaml / .yml)
  • JSON (.json)
  • TOML (.toml)
  • Archivos de propiedades de HCL, INI y Java

Puede elegir el formato con SetConfigType o Viper lo infiere a partir de la extensión del archivo.

Instalar e importar Viper

Añada Viper a su módulo e impórtelo:

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

Como Viper es una dependencia externa, los fragmentos que lo importan no se pueden ejecutar en este reproductor de lecciones. Cuando es posible, simulamos su comportamiento con la biblioteca estándar.

import "github.com/spf13/viper"

Indicarle a Viper dónde buscar

Configure el nombre y el tipo del archivo, así como las rutas de búsqueda, antes de leerlo:

  • viper.SetConfigName("config") establece el nombre base, sin extensión
  • viper.SetConfigType("yaml") establece el formato
  • viper.AddConfigPath(".") añade un directorio a la búsqueda
viper.SetConfigName("config")
viper.SetConfigType("yaml")
viper.AddConfigPath(".")
viper.AddConfigPath("/etc/myapp")

Leer el archivo

Llame a viper.ReadInConfig() para cargar el archivo. Devuelve un error que debe comprobar:

  • Si falta el archivo, devuelve un ConfigFileNotFoundError
  • Si el archivo tiene un formato incorrecto, devuelve un error de análisis
if err := viper.ReadInConfig(); err != nil {
    log.Fatalf("failed to read config: %v", err)
}

Un ejemplo de configuración YAML

Imagine un archivo config.yaml como este. Viper aplana las claves anidadas utilizando puntos, por lo que el puerto pasa a ser server.port.

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

Obtener valores tipados

Viper ofrece getters tipados para evitar conversiones manuales:

  • 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 funciona igual

Cambiar a JSON solo modifica el contenido del archivo y el tipo de configuración. Se aplican las mismas rutas de claves y los mismos getters. Esta portabilidad explica la popularidad de Viper: a su código no le importa qué formato haya elegido el equipo de operaciones.

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

TOML también es compatible

TOML es habitual en el ecosistema de Go, ya que muchas herramientas CLI lo utilizan. Las mismas claves anidadas se asignan a rutas separadas por puntos.

[server]
port = 8080
host = "localhost"

debug = true

Analizar JSON con la biblioteca estándar

Para ver cómo funciona realmente la idea, aquí tiene un ejemplo de Go puro que analiza una configuración JSON sin Viper y utiliza únicamente encoding/json para cargarla en un map (Viper también utiliza internamente un map genérico).

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

Ejecutable: leer en un map

Este programa autónomo analiza una configuración JSON en un map genérico e imprime sus valores, reproduciendo lo que Viper hace 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"])
}

Comprobación rápida

Ponga a prueba sus conocimientos sobre la lectura de archivos de configuración con Viper.

Resumen

Ha aprendido cómo Viper lee los archivos de configuración:

  • Admite YAML, JSON y TOML de forma transparente
  • Se configura con SetConfigName, SetConfigType y AddConfigPath
  • ReadInConfig() carga el archivo y devuelve un error
  • Los getters tipados, como GetInt y GetString, leen valores mediante claves separadas por puntos

A continuación: sobrescribir la configuración con variables de entorno.

Preguntas frecuentes

¿La lección «Lectura de archivos de configuración» es gratis?

Sí — el texto completo de «Lectura de archivos de configuración» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Go Academy, actualiza a CoddyKit PRO. El curso de Go Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Lectura de archivos de configuración»?

Cargue YAML, JSON y TOML Practicas Go Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Go Academy?

No se requiere experiencia previa. Go Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.

¿Cuánto tiempo toma la lección «Lectura de archivos de configuración»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Go Academy?

Sí. Cada lección de Go Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Lectura de archivos de configuración
  2. Variables de entorno
  3. Valores predeterminados y supervisión
  4. Vinculación con structs
← Volver a Go Academy