I always use go-flags [1] in my Go programs. It has support for GNU-style options, pretty help output, subcommands, automatic parsing of more complex arguments (e.g. time.Duration) among other things.
I do wish they would improve the included flags package though. There are lots of nice third party packages, but having a proper one in the standard library would've been better.