Variables de ambiente en Go con godotenv

Clase 28 de 29Curso de Go

Resumen

Las variables de ambiente son vitales para mantener tu proyecto seguro al proteger información sensible como cadenas de conexión y claves de acceso. En Go, manejarlas es particularmente sencillo gracias a algunos métodos específicos que aprenderás aquí.

¿Qué es un archivo .env y cuál es su utilidad?

El archivo .env almacena datos críticos como nombres de aplicación, entornos de desarrollo y puertos de comunicación. Usar estas variables de ambiente te permite mantener protegido tu código, asegurando información sensible en externos y evitando exponer secretos en texto plano.

¿Cómo configurar y utilizar variables de ambiente en Go?

Configurar variables de ambiente en Go es muy fácil:

  • Primero, se crea un archivo .env con variables como:
  • Nombre de la aplicación.
  • Entorno de trabajo.
  • Puerto de comunicación.

Un archivo .env podría lucir así:

APP_NAME=Goamine
APP_ENV=desarrollo
APP_PORT=8080

Luego, desde Go, puedes acceder a estos valores eficazmente mediante un paquete externo.

¿Cómo agregar paquetes externos con Go?

Go permite integrar fácilmente paquetes externos, aunque a diferencia de lenguajes como Node con NPM o Python con pip, Go no posee un repositorio centralizado.

Para agregar un paquete externo:

  1. Inicializa un módulo con el siguiente comando:
go mod init nombre_modulo
  1. Luego instala el paquete desde GitHub usando:
go get github.com/joho/godotenv

Este comando descargará e integrará automáticamente el nuevo paquete en tu proyecto.

¿Cómo implementar el paquete godotenv en código Go?

Ya instalado el paquete, simplemente importa y utiliza una sola línea de código para cargar las variables del archivo .env:

package main

import (
  "fmt"
  "log"
  "github.com/joho/godotenv"
  "os"
)

func main() {
  err := godotenv.Load()
  if err != nil {
      log.Fatal("Error cargando el archivo env")
  }

  appName := os.Getenv("APP_NAME")
  appEnv := os.Getenv("APP_ENV")
  appPort := os.Getenv("APP_PORT")

  fmt.Println("Nombre de la aplicación:", appName)
  fmt.Println("Entorno de la aplicación:", appEnv)
  fmt.Println("Puerto de la aplicación:", appPort)
}

Al ejecutarlo con go run main.go, verás impresas las variables fácilmente y de forma segura.

¿Puedo usar variables del sistema operativo?

Sí. Este método permite no solo obtener valores desde el archivo .env, sino también acceder eficientemente a variables de ambiente del propio sistema operativo, añadiendo flexibilidad y seguridad adicional a tu aplicación en Go.

¿Has experimentado ya con variables de ambiente en tus proyectos en Go? ¡Comparte tu experiencia en los comentarios!