I spent some time learning the Go programming language by working through some tutorials and building a small app. The book An Introduction To Programming in Go has 14 chapters and covers data structures, HTTP, command line apps, concurrency, and more.
I typed out most of the go example code for practice and have pushed my code here. Go has specific project layout requirements. The
GOPATH environment variable points at
~/go and project source code is in
src as a subdirectory of
~/go. For more information refer to
go help gopath.
To learn Go better, I made a small web app and deployed it to Heroku. This forced me to figure out how to handle form posts, redirects, the MD5 library, and work with a database.
The Heroku part started off easy thanks to this guide. However Heroku deploys failed for me with third-party dependencies like
pq, using godep. I wasn’t able to get godep working, but I was able to use gopack for the same purpose instead.
Gournay is a simple web app that shrinks URLs, written in Go. The source is on GitHub and the app is deployed at gournay.herokuapp.com. Gournay depends on the
pq package to connect to a PostgreSQL database, and uses
godep to manage its dependencies.
Gournay takes a long URL like
http://www.npr.org/2014/05/17/313142425/a-worldwide-voyage-to-prove-stars-wind-and-waves-are-enough and makes a short hash from it. The URL and hash are stored in a database table. If the hash is posted back at Gournay, the user is redirected to the original URL.
I am enjoying learning Go so far, and have plans to spend more time learning the concurrency features. If you have any other tips on Go, or found this useful, please leave a comment.