{} The Go Reference

A deep, Go-first guide

Go Concurrency, demystified

From the failure modes you must design against to the runtime that schedules it all — goroutines, channels, select, the sync package, the memory model, context, and the M:N scheduler. Grounded in Concurrency in Go, with diagrams and runnable code on every page.

Your concurrency progress

Mark a topic “learned” on its page and watch the bars fill.

Skill map

Learned nodes light up — the glowing one is your next step. Click any node to jump in.

Foundations

The hard truths first — what concurrency is, why it bites, and the failure modes (races, deadlock, starvation) you must design against.

Building Blocks

The primitives: goroutines, channels, select, the sync package, atomics, and the memory model that makes them safe.

Coordination & Scale

Putting the pieces together at scale — context cancellation, rate limiting, and propagating errors across goroutines.

The Runtime

Under the hood — the M:N scheduler, work-stealing, GOMAXPROCS, the concurrent GC, and how goroutine stacks grow.

Concurrency Patterns

The composable recipes built from these primitives — pipelines, worker pools, fan-out/in, errgroup and safe cancellation. (Part of the Design Patterns track.)

Revise

REFERENCE · Reference Concurrency Cheat-Sheet

A one-page map of Go concurrency — the channel axioms, select idioms, the sync toolbox, the composable patterns, and the gotchas. Built for revision and interview prep.

One-page recap · ⏱ 1 min

🐹 The two Go proverbs to keep in mind

“Don't communicate by sharing memory; share memory by communicating.” And: “Concurrency is not parallelism.” Almost everything here is a consequence of taking those two seriously.