Como gerenciar configuração corretamente em Go: env, flags ou arquivos?
Olá a todos! Sou novo em Go e estou tentando entender como armazenar as configurações do aplicativo corretamente. Comecei a escrever um pequeno servidor web e me deparei com um problema: quero que o aplicativo possa ser configurado sem recompilação — alterar a porta, a string de conexão do banco de dados, o nível de log.
Atualmente, estou fazendo assim: crio um pacote config, onde no init() leio as variáveis de ambiente. Mas isso parece um hack, especialmente quando há muitas configurações (cerca de 20). Além disso, não sei como definir valores padrão e como passar a configuração para outros pacotes de forma conveniente.
Aqui está meu código atual:
```go
package config
import "os"
var Port string
var DBHost string
func init() {
Port = os.Getenv("PORT")
if Port == "" {
Port = "8080"
}
DBHost = os.Getenv("DB_HOST")
if DBHost == "" {
DBHost = "localhost"
}
}
```
Depois, no main.go, eu simplesmente acesso config.Port. Mas essas são variáveis globais, e nos testes é difícil sobrescrevê-las.
Digam-me, como é comum gerenciar
No answers yet.
Faça login para deixar uma resposta