A Quick Write-Up of 'A Tour of Go'

Golang Revisited

I casually looked into Go (Golang?) in early 2014 thinking to myself "another language, huh? Oh, Google, so it's a trendy elitist thing. Is it another Julia or something?" Now, I am aware that both are actually useful and increasing in popularity, so I share those thoughts transparently while eating my words.

Being stuck in a world concerned with architecture, product ownership, agile garbage, and mentorship, I don't spend as much time coding as I would really like. And honestly, when I am writing code, it's usually to help get something done; it is increasingly less proof of concept or brain-growing work.

A Few Hours of Zen

It's important to recharge with something interesting. I didn't want to spend a lot of time writing another side project since my progress is lacking on those already, but I did want to learn something useful.

With that frame of mind, I went back and thought of all the tinker toy languages I could give a go for a little bit. Go made the most sense to me. I confess I will probably play around with Rust in deeper detail, though.

I wish I had played around with it sooner

I like Go. The language made me smile as I wrote it, which many haven't as of late (Java, I'm looking at you. How are you still boss?).

I don't have really elaborate or probably even valuable things to say about it other than I am impressed by its uniqueness. It has ideosyncracies that some developers might find strange, and that is fair, but most worthwhile languages do. I will be watching it closely over the next few years.

As an aside, I absolutely plan on finishing a website based on Go just to see how I feel about it, and will post that progress on here later. I'm not convinced the central error handler makes a lot of sense, though I think it exists to FORCE good code from the beginning. While it's admirable, it's the sort or thing that keeps the language in the hardcore dev space and away from the mainstream.

A Fun Tutorial

There are a ton of great posts that cover Go's value, but here are a few more reasons to get you to dedicate a Saturday evening to tinkering and working your way through the tour:

  1. It's simple (until it isn't because it has some quirks); I really do think it's clean and readable. You won't chase rabbits trying to complete something.
  2. As a functional language, I think it's easy to grasp.
  3. Concurrency yada yada yada, you can read that on its site.
  4. It's ready for hardcore, heavy work on a lightweight scale. Statically linked binaries help, and there is a fantastic example about a tiny Docker image here.

My Code

In the spirit of the tutorial, I haven't shown my code here. I suspect they did not show solutions for a reason, but if you want to compare answers, ask to see the repo.

Go try it out.