Comment gérer correctement la configuration en Go : env, flags ou fichiers ?
Bonjour à tous ! Je suis nouveau en Go et j'essaie de comprendre comment stocker correctement les paramètres de l'application. J'ai commencé à écrire un petit serveur web, et j'ai rencontré un problème : je veux que l'application puisse être configurée sans recompilation — changer le port, la chaîne de connexion à la base de données, le niveau de logging.
Pour l'instant, je fais comme ça : je crée un package config, où dans init() je lis les variables d'environnement. Mais cela semble être une solution de fortune, surtout quand il y a beaucoup de paramètres (environ 20). De plus, je ne sais pas comment définir des valeurs par défaut ni comment passer facilement la configuration à d'autres packages.
Voici mon code actuel :
```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"
}
}
```
Ensuite, dans main.go, j'accède simplement à config.Port. Mais ce sont des variables globales, et dans les tests, il est difficile de les redéfinir.
Dites-moi, comment gère-t-on cela en Go ?