Tech Book Reviews: Go

Paper stack
Paper stack

Nothing like a paper book is falling onto your face, reminding you that you’re falling asleep and need to turn off the bedlight. I’ve read some books about GoLang and would like to share some of my opinions. The list goes in the reverse chronological order of me reading them. Some are good, some are great, and some are just there. Let’s Go.

100 Go Mistakes and How to Avoid Them

100 Go Mistakes and How to Avoid Them
 (2022)
100 Go Mistakes and How to Avoid Them (2022)

Got it as part of the Manning Early Access Program , which was an excellent companion to my occasional nighttime reading. It came with the early online chapters, which proved to be an exciting read. Learning from the “how NOT to do things” types of materials is fun. At the end of 2022, this book is as current as it can get and is up-to-date with Go 1.19 examples. Not that a lot was added to the language itself — it’s just the recency and real-life context that fascinates me while reading it. I’m using this book now to get new engineers in my team to get up-to-speed with the ecosystem. You should probably also follow Teiva Harsanyi on Medium.

Writing an interpreter in Go

Writing an interpreter in Go
 (2018)
Writing an interpreter in Go (2018)

It just happened that I’ve written a couple of cross-compilers from scratch in Scala (I probably need to write a blog about it as well), so once un-magical AdSense showed me this book, I didn’t hesitate to get it. It’s fantastic — you start by writing a Pratt parser from scratch and extend it in a pure Test Driven Development (TDD) fashion until you have a working JavaScript-like line-by-line interpreter. It’s pretty fun and pretty niche. Please also check out Thorsten’s blog  — plenty of exciting things there.

The Go Programming Language

The Go Programming Language
 (2015)
The Go Programming Language (2015)

Great introduction. A bit outdated now. My colleague, Alex Ott , said that Learning Go (2021) is more recent and fun. I was hoping to get a bit more deep-dive on cgo, though this book only scratched its surface. I liked the description of “for range” iterator gotchas, enum constants, and small hashmap tricks, like bit vectors. Back in the time, it was a great book. In 2022, I’d recommend buying something more recent.

Concurrency in Go

Concurrency in Go
 (2017)
Concurrency in Go (2017)

Even though this book is thin — it is a precious one! Probably the most significant concentration of bookmarks per book I’ve recently had. It’s great for those coming from other languages and picking up Go. Especially if you enjoyed the likes of Java Concurrency in Practice (2006) and Camel in Action (2010). Every chapter starts with seemingly correct code with some unobvious problems, followed by multiple iterations of potential solutions and their drawbacks, diving deep into explanations. I especially enjoyed the chapters on error propagation, heartbeats, and other common patterns. However, one sad thing is that it still uses somewhat outdated “done channels” instead of now widespread contexts. Just look at how exciting code examples are. And that rodent on the book cover is simply cute.

Black Hat Go

Black Hat Go
 (2020)
Black Hat Go (2020)

This was my first paper book on the language, after maintaining an open-source project written in Go for about a year — hey, you need to read programming language books once in a while, right? I got it for fun. It’s not as horrible as Amazon reviews suggest. I would not recommend it as “the best practice introduction” to the language, even though it positions itself as the one for beginners. Coding practices in the book are rather ugly and somewhat outdated, but how it’s written and how ideas are applied make it fun. You can check out code examples on GitHub.And, of course, my introduction to the language started with an interactive Tour of Go , which I’ll recommend to everyone because it’s the equivalent of Dive Into Python , but for Go.

See Also