* no classes (only structs and embedding)
* no VM, only a run-time (cross-compiling is trivial though)
* hardly anything is an object
* no exceptions
* concurrent by design
It's quite possibly the most distant language from Java in the procedural world, which I think is a good thing. It forces you to rethink your data and their interactions.
I think Go is a great language and works in most of the spaces where Java lives, except maybe GUIs, but Java was never any good at that anyway. It's more suited for the server, but it can work well for computationally-intensive tasks as well.
Go is better thought of as a replacement for whatever server stack you have than a replacement for a given language.