Go is not the fastest on the block, but it
is a new language that refines many paradigms at once. It can be said to offer best of many worlds: UNIX philosophy, C, C++, garbage collection, concurrency-support, safety, packages, interfaces with no/loose bindings, strict typechecking, multiple composition instead of multiple inheritance, "one way to do it", standardized & automatic pretty-printing of code, using Uppercase to export/make public, minimalistic dependencies, standard built-in libraries, one binary, open source, coherent community, etc. It'll take a while to explain all the benefits and language choices, so better research and experience yourself.
If you want to code like in Java in Go, you'll be miserable. However, if you want to code similar to C/C++, the language is much simpler, cleaner and prevents many typical ambiguities at runtime. It does away with complications like templates/generics (for now at least), inheritance (which class methods are active now?), multiple inheritance (which parts of the method class-tree is active now?), polymorphism by virtual method calling (which type is this variable acting as here again?), plus some more feature bloat mature programming languages can't seem to avoid implementing by default. More importantly, the language compiles most things almost instantly and
feels like Python or Ruby, though executes much faster and usually uses way less memory.
On the downside, Go do not offer exception-handling in the way it is convenient in Java to delay fixing errorhandling by tracing the entire call-stack, but which also means code execution usually become exceptional in Java, alas faster/cheaper/easier to deal with for the developer. You'll also need to code more boiler-plate code in Go for things like iterating over containers/arrays, stuff, which in more dynamic languages mostly is abstracted away. Some of this you can choose to do in Go, but then you'll need to write your own libraries. You get more control over memory layout of structs (ie. byte-alignment and order like in C/C++) plus actual code execution, so you can avoid bloated design patterns and lazy usage of suboptimal algorithms.
The Go language is now frozen at version 1 with the developers working on improving performance, GC, tooling and community, not feature-creep and junk. In terms of performance Go is in the middle of the bunch:
C < C++ < Go < Java < Python / Ruby
It's possible to link C-programs with Go in various ways. In terms of memory, Go is not smallest either, but may be compared to C/C++ depending on careful usage, though not really made for the most minimalistic embedded systems.
Of course you won't automagically code great programs using Go right away, but being a new best of "all" worlds language, you might benefit anyways before you learn "The Go Way". I don't think even the developers are quite there yet where they know how to do everything themselves. Indeed, they emphasize thinking for yourself rather than blindly following the "nuggets" of "design patterns" and awful language abstractions/workarounds like FactoryFactory and Singletons.
So for projects that aim to
simplify, I think Go and its developers' careful and deliberate way of rational thinking may be worth investigating and implementing, also for your own projects. As for raw speed, that is possible too in a way that is often out of reach of interpreted and even some VM language implementations. I'm thinking here of raw computation, something you'd usually want to do in C/ASM (fastest) or C++. There are even ways to use
Go's ASM directly with your Go programs, as this is even used by some of the built-in standard libraries.
As for all types of optimizations, you should be lazy about them, delay their conclusion, so you free up time and brainpower to improve innovation, designs and organic development. But it do help that raw power is so easily available under the hood. Prefetching, precalculating, caching, etc. may always be used where raw cpu-power falls short, but always come with their own limitations, complications and costs.