Clean way to pass configs in a Go application
There are many concurrent approaches to organize application configuration nowadays.
Classic .ini
files, .json
, .toml
, .yaml
, configs, modern .env
and, of course, container environment. And don’t forget about CLI arguments! Am I missing something?
Let me be honest, I really dislike any implicitness in interfaces. Same for the CLI of course. Any of your interfaces, whether public or internal, API or object interface, a class method or module facade – they have to cooperate fair. The contract between you and the other side should be explicit, rightful and without any notes in small text at the bottom of the page.