Go is C with type-safety and garbage collection, and Java without all the Java. It does a fairly good job of getting out of your way, but it is, to me, a language of compromises. It is strongly, statically typed but lacks generics. It has useful built-in types but they act very differently to the types you can create for yourself. It wants to be a modern language but uses 40 year old syntax. The core library is a confusing mix of functions-that-act-on-values and methods-on-types.
That said, I have enjoyed using it. It's compiled, but there is very little compiler wrangling due to the way your source files must be structured, and external dependencies are resolved from source, not from linker arguments. It's fast. It feels familiar. The concurrency and functional aspects are great. Would I recommend it to a client? Not yet - Java and C# are far more mature and Go doesn't offer anything compelling for the types of programs you might use those languages for (it has been said of Go that it