godotenv para Go: guia completo com exemplos práticos
A biblioteca godotenv é uma ferramenta portátil e leve para carregar variáveis de ambiente a partir de arquivos no formato .env no ambiente de execução de aplicações em Go. Inspirada na biblioteca de mesmo nome para Ruby e Node.js, ela segue o princípio do "12 Factor App", que determina que a configuração deve ser armazenada em variáveis de ambiente. O godotenv permite que desenvolvedores retirem dados sensíveis (chaves de API, senhas de bancos de dados, configurações de conexão) do código-fonte e os coloquem em um arquivo separado, que não entra no sistema de controle de versão.
A principal função da biblioteca é simplificar o gerenciamento de configuração durante o desenvolvimento. Em ambientes de produção, as variáveis de ambiente geralmente são definidas por mecanismos do sistema (Docker, Kubernetes, pipelines CI/CD), mas na máquina local do desenvolvedor é mais prático usar um arquivo .env. O godotenv lê automaticamente esse arquivo e disponibiliza todas as variáveis definidas através da função padrão os.Getenv(). Isso elimina a necessidade de criar um parser próprio e lidar com casos extremos.
A biblioteca suporta valores multilinha, comentários (linhas que começam com #), linhas em branco e escape de caracteres especiais. Ela não possui dependências externas além da biblioteca padrão do Go, o que a torna ideal para microsserviços e utilitários de linha de comando. O godotenv não sobrescreve variáveis de ambiente do sistema já existentes, garantindo um comportamento seguro durante a implantação.
Instalação
Para instalar a biblioteca, execute um dos seguintes comandos no terminal, na raiz do seu projeto Go:
# Instalação da versão estável mais recente
go get github.com/joho/godotenv
# Se você usa Go Modules (recomendado)
go get github.com/joho/godotenv@latest
Após executar o comando, uma entrada de dependência será adicionada ao arquivo go.mod. Certifique-se de que seu projeto foi inicializado com go mod init.
Início rápido
Crie um arquivo .env na raiz do projeto com o seguinte conteúdo:
# Arquivo .env
APP_NAME=MySuperApp
DB_HOST=localhost
DB_PORT=5432
DB_USER=admin
DB_PASSWORD=secret123
SECRET_KEY=my-super-secret-key
Agora, escreva um programa simples em Go que carregue este arquivo e exiba os valores das variáveis:
package main
import (
"fmt"
"log"
"os"
"github.com/joho/godotenv"
)
func main() {
// Carrega o arquivo .env
err := godotenv.Load()
if err != nil {
log.Fatal("Erro ao carregar o arquivo .env:", err)
}
// Lê as variáveis de ambiente
appName := os.Getenv("APP_NAME")
dbHost := os.Getenv("DB_HOST")
dbPort := os.Getenv("DB_PORT")
dbUser := os.Getenv("DB_USER")
dbPassword := os.Getenv("DB_PASSWORD")
fmt.Printf("Aplicação: %s\n", appName)
fmt.Printf("Banco de dados: %s:%s\n", dbHost, dbPort)
fmt.Printf("Usuário: %s\n", dbUser)
fmt.Printf("Senha: %s\n", dbPassword)
}
Execute o programa:
go run main.go
Você verá a saída com os dados do seu arquivo .env.
Métodos e funções principais
A biblioteca godotenv oferece várias funções essenciais para trabalhar com arquivos de configuração. Vamos detalhar cada uma delas.
1. Load(filenames ...string) error
Assinatura: func Load(filenames ...string) error
Descrição: Carrega variáveis dos arquivos especificados para o ambiente do processo. Se nenhum arquivo for informado, procura pelo arquivo .env no diretório de trabalho atual. Se o arquivo não for encontrado, retorna um erro.
package main
import (
"fmt"
"os"
"github.co Também na biblioteca
ARKit para Swift: Guia completo com exemplos práticos
Frameworks CLI para Java: visão geral e comparação das melhores ferramentas
Bibliotecas WebSocket para Node.js: ws, Socket.IO, uWS — visão geral completa
Cache em Java: Redis, Caffeine e outras ferramentas