1. They got concurrency right. Writing ostensibly blocking code and letting the runtime yield in the background is The Future.
2. Implicit interfaces and formalizing "composition over inheritance" is the right way to think about reusing functionality.
3. Deployment is stupidly easy with zero-dependency binaries.
4. The cross-compilation tool chain is dead simple. (excepting CGo)
5. The tooling around Go's handling of code (godoc, go vet, go fmt, etc) is superb. Enforcing a one-true coding style makes foreign code easier to understand.
That being said, Go is missing the expressiveness that you expect coming from higher level languages like Haskell/Python/Scala. In many cases, it is a unnecessary step backwards on the thought-to-code spectrum. Not having things like generics and list comprehensions makes my code more verbose and more difficult to understand.
Certainly Go will evolve, although the authors often seem perhaps a little too resistant to change. I suspect that Go's popular successor ten years from now will have stolen Go's best qualities and iterated faster to include the higher-level language niceties that we expect.
I have a longer blog post to expand on this later.