I’ve been playing with Go recently. I like it.

I’d read about Go and watched a few videos about it, but I’d never spent time writing Go in the editor. I use Hugo, a static site generator written in Go to make this site, so I thought it made sense to take the language for a spin.

What I like about Go:

  • It’s a small language, which makes it easier to learn.
  • It’s fast to execute and fast to compile.
  • It’s strongly typed, which saves me from myself.
  • The syntax is terse.
  • The language is opinionated, so there are good constraints.

What I don’t like as much about Go is its lack of functional paradigms:

  • Nascent generics (they’re still experimental)
  • No tagged/discriminated unions
  • No map or foldl
  • Pointers allow mutability and hidden side effects
  • Iteration over recursion (recursion is non-performant)

Elm (my favorite language) and Go are dissimilar, but they share some core characteristics. A small language that runs and compiles quickly, while adding new features slowly, is ideal for a hobbyist like me.