4 Minimal Web Frameworks for Go

Go – otherwise known as Golang – is a programming language that’s built by Google. (hence, the name)

Quite a few large companies haven chosen to use Go in their projects, good examples are those of CloudFlare, Disqus, and even Secret. I think there are literally hundreds more, but it does go to show that the language is well-prepared for high demand websites.

Golang has plenty of disadvantages, but it seems that people tend to focus more on the advantages than anything else, some of which include:

  • reasonably fast, perfect for concurrent tasks
  • has built-in server for unit tests, benchmarks, documentation, etc,.
  • is cross platform
  • compiles quickly, like a beast

Go is expressive, concise, clean, and efficient. Its concurrency mechanisms make it easy to write programs that get the most out of multicore and networked machines, while its novel type system enables flexible and modular program construction.

Go compiles quickly to machine code yet has the convenience of garbage collection and the power of run-time reflection. It’s a fast, statically typed, compiled language that feels like a dynamically typed, interpreted language.

The Go Programming Language

I’ve actually published quite a few of this type of posts in the past, and I think that I’m also wrapping it up (or not) with this post right here. Here are a couple of links to previous stuff, might be of interest to you:

in my quest to finding web frameworks for Go, I was able to gather up a total of four – minimalist – web frameworks that I think might be of use to you. Whether I miss any good ones, please post them in the comments for other community members to enjoy!

Beego

Beego Web Framework for Go
Beego is a very easy to understand and use, web application framework that you can use to build web apps with your Go expertise. With the extensive features built inside of Beego, thinks like application testing and packing deploying can be done automatically.

The goal of beego is to help you build and develop Go applications effectively in the Go way. Beego integrates features belonging to Go and great mechanisms from other frameworks; in other words, it’s not a translated framework, it’s native and designed only for Go.

Beego also uses a modular design and thus gives you the freedom of choosing which modules you want to use in your applications and leave alone useless ones for you. [GA]

Revel

The Revel Web Framework for Go
Revel enables you to get going really quickly, it has nice defaults put in place that enable rapid development, and high productivity; as advertised on the project page. Is known for its flexibility in live environment, like code reloading and such.

I was debating whether I should include Revel or GoCraft/Web, and I decided to go with Revel, considering that GoCraft/Web author has said he doesn’t want it to be a framework, just a way of adding web handling capabilities to your apps.

Martini

Martini Classy web development in Go.
Martini is a powerful package for quickly writing modular web applications/services in Golang. It works just fine with other Golang libraries, has great routing system that’s easy to use and understand. Modular design enables for easier function integration, and previously added function removal.

Very lovely, minimal, web framework to work with. Every Go user should give this a go, if only for the learning curve.

Traffic

Traffic Web Framework for Go
It’s a very tiny web framework, but does offer some really useful features and because it’s so lightweight, is being considered for multiple projects. It has middlewares, templates, error handlers, abilities to serve static files and plenty more to keep you busy.

I found this blog post to be a really good introduction of Traffic, and it goes through some of the tiny pieces and bits that might explain things a little more.

Minimal Web Frameworks for Go

Quite a bit of stuff to play with, nothing overly spectacular, but that’s as far as it goes for minimal framework, not sure whether I missed some of the more obvious ones.

I hope this list will prove to be of good use to you, and if you could help to spread the word – I’d appreciate it a lot!