Obviously, frameworks (and ecosystems…) like Flask, Sinatra, Django and Rails have an advantage in that you can get stuff done today: they do a lot for you. And, for many use-cases, performance will never be a problem.
Saying that, writing HTTP logic in Go has been surprisingly easy, and the small amount of extra boilerplate you have to write (if you’re sans-framework like me) is nice when you realise how darned fast your application is. Being able to deploy a single binary and front-end it with nginx also reduces a ton of complexity.
PS: Once I finish this thing off over the Christmas break, I’m hoping to write up a few articles on the bits-and-pieces that took a bit of time to “get right”. Also have a minimalist (i.e. wraps HandleFunc, not Handler) CSRF package in the works.
Agreed – if you’re new to programming in Go, I’d recommend using the standard library (supplemented by Gorilla once you get the hang of things).
If things start getting unwieldy as your app grows, you can always try out something like Revel, but by starting with the standard library (which already has a very clean web server built-in), you’ll get a sense for the way things work “under the hood” early-on.