I started out writing CGIs and servers in C many years ago and have experimented with Perl, Python, PHP, Ruby, NodeJS and Go since then.
Go has a syntax that is instantly familiar and simple to master.
Go's concurrency paradigms are simple to understand and easy to use.
Go's compiler is fast and clear.
If a Go program compiles it nearly always runs.
Go's built-in library has most things you need to write HTTP-based servers.
If you use Go naively you will almost certainly be using Go correctly: your server will be fast and efficient. This is not the case with NodeJS. Writing fast, efficient NodeJS code is hard. Maintaining fast, efficient NodeJS code is even harder.
On the down side - while Go don't suffer from 'callback hell' but it does have a tendency towards 'cast soup' - this makes working with JSON a little trickier than it should.
Aside from the main programming language I would also look at:
* JSON API-first driven development
* NodeJS's plethora of web-centric code management tools & compilers: SCSS, RequireJS, Grunt etc
These (with Go) are the main technologies I'd use to build a large web infrastructure.
I've heard good things about the mongodb package and interface, but I haven't had a reason to use mongo.
So really if you use Go for your server side, you'll get a lot of nice benefits, listed by sambeau, but just be aware, you might have to tussle to find the right fit of backend tools, and you will likely have to make your own Model abstraction. This might not be a downside though, as I know a lot of engineers will build (or rebuild) the model layer no matter the framework.
I find gorp with Revel (http://robfig.github.io/revel/) makes for a powerful and performant backend. I just wish Revel had better testing integration.
Or how about a class which you pass methods to your callback functions and bind them to the instance properly.
You never need to nest a callback if you know how to work with prototypical inheritance.
You can just call a function and use the result.