Just use standard go flags with iniflags.
Standard go flags have the following benefits:
- Idiomatic.
- Easy to use. Flags can be easily added and scattered across arbitrary packages your project uses.
- Flags have out-of-the-box support for default values and description.
- Flags provide standard 'help' output with default values and description.
The only drawback standard go flags have - is management problems when the number of flags used in your app becomes too large.
Iniflags elegantly solves this problem: just modify two lines in your main package and it magically gains support for reading flag values from ini file. Flags from ini files can be overriden by passing new values in command-line.
See also https://groups.google.com/forum/#!topic/golang-nuts/TByzyPgoAQE for details.