Domain

Go

Go (Golang) is a modern, compiled, garbage-collected language designed at Google specifically to make large, concurrent systems software easier to write correctly. Where C++ builds up from C by adding features, Go took the opposite approach — a deliberately small language, with concurrency (goroutines and channels) built in as a first-class citizen instead of bolted on. This domain assumes you already know C, and explains every Go concept by contrast with what you already know from C, C++, or both.

Why this domain is separate, and why it's here at all

Go isn't built on C the way C++ is — it's a genuinely different language with its own compiler, runtime, and standard library. It earns a place in this notebook anyway because it's a real, growing presence in systems and infrastructure software, and increasingly in IoT/edge tooling specifically (see this domain's closing chapter, Go for Embedded/IoT). Understanding it well means understanding where it deliberately agrees with C/C++'s choices, and where it deliberately doesn't — which is how every chapter here is framed.

Topics

Nothing left in "Planned" — this domain now covers the full arc from a first program through concurrency and error handling, closing with where Go genuinely fits on embedded and IoT hardware.

Scope note

Read top to bottom the first time through — each chapter assumes the ones before it. The final chapter, Go for Embedded/IoT, closes the loop back to Embedded by covering where Go actually fits (and doesn't) on constrained hardware, and TinyGo, the compiler that makes some of it possible.