Cómo gestionar correctamente la configuración en Go: ¿env, flags o archivos?
¡Hola a todos! Soy nuevo en Go y estoy tratando de entender cómo almacenar correctamente la configuración de la aplicación. Empecé a escribir un pequeño servidor web y me surgió un problema: quiero que la aplicación se pueda configurar sin recompilar — cambiar el puerto, la cadena de conexión a la base de datos, el nivel de logging.
Por ahora lo hago así: creo un package config, donde en init() leo las variables de entorno. Pero esto parece un parche, especialmente cuando hay muchas configuraciones (unas 20). Además, no sé cómo establecer valores por defecto y cómo pasar la configuración a otros packages de manera conveniente.
Aquí está mi código actual:
```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"
}
}
```
Luego en main.go simplemente accedo a config.Port. Pero estas son variables globales, y en los tests es difícil sobrescribirlas.
Díganme, ¿cómo se acostumbra a gestionar la configuración en Go?
No answers yet.
Inicia sesión para dejar una respuesta