I don't see how Go makes a good replacement for Rails.<p>It's insufficiently high-level IMO.<p>I would consider C# and it's ASP.NET a good replacement.
Or Scala's Play, or Java's Spring. But probably not anything implemented in Go.<p>There are good reasons for this. Go lacks generics and has to use reflection as a crutch to match Rails for flexibility.<p>C# ASP.NET MVC on the other hand I think is probably the best match, in fact I think it actually might be superior to Rails in many ways.<p>Namely, like Go it is statically typed. However unlike Go it has powerful polymorphic capabilities in the form of interfaces and generics. Go can only have generic data structures built into the language, they can not be built as libraries. C# however has all of it's collections implemented as library code (though they may be in the std lib like System.Collections).<p>One might argue Go has great concurrency support, however C# has just as good concurrency support if not better. C# supports async/await, Task based concurrency, native threads, various thread pool implementations etc. It's primary web framework ASP.NET MVC is fully concurrency aware and uses a M:N request to thread model making use of async IO.<p>The tooling is even better than Go, Visual Studio and Resharper might cost money but they are worth what they cost.
Gofmt is great, but VS/Resharper can automatically format C# code. VS can also connect to running processes and interactively debug them, even remotely. There are tools for decompiling and working with the bytecode format (MSIL). There are great profilers and monitoring systems that run on the runtime (AppDynamics is great).<p>Most of this is true of the Java runtime and Spring/Play also. I am just less familiar with them.<p>The point is Go is not great for this in it's current form, there are better alternatives.