Skip to content

Go Deep Dive

Master the Go language — from first goroutine to production patterns.

Go is a statically typed, compiled language built for simplicity, reliability, and scale. Written for Go 1.27 (with notes on which release introduced each feature), this course teaches Go on its own terms: no comparisons, no shortcuts — just deep, idiomatic Go from the ground up.

Work through modules in order. Each lesson contains a runnable playground — the Run button compiles on go.dev with the current Go release (1.27) and falls back to an in-browser interpreter (Go 1.26, older APIs only) when you are offline — a key-point callout, a short quiz, and a progress tracker. You can mark lessons complete as you go — progress is saved locally in your browser.

ModuleWhat you will learnStatus
Basics & SyntaxVariables, constants, types, control flow, functions, and packages — the foundation every Go program is built on.Available now
Types & DataArrays, slices, maps, structs, and pointers — how Go represents and organises data in memory.Available now
Methods & InterfacesMethods on types, interface design, implicit satisfaction, composition via embedding, and the io.Reader/io.Writer contract.Available now
ConcurrencyGoroutines, channels, select, sync primitives, context, and the canonical concurrency patterns.Available now
Errors & GenericsGo’s error model, fmt.Errorf("%w"), custom error types, errors.Is/As, generics with type parameters, constraints and generic methods, and range-over-func iterators.Available now
Standard Libraryfmt, strings, io, net/http, encoding/json, time — the stdlib you will use every day.Available now
Testing & Toolinggo test, table-driven tests, benchmarks, the race detector, go vet, and golangci-lint.Available now
Runtime InternalsThe memory model, the scheduler’s GMP internals, the garbage collector and escape analysis, and the real memory layout of Go’s types.Available now
Reading & Reviewing GoA 24-pattern catalog of bugs AI-generated Go produces, a one-page review checklist, what go vet/staticcheck/golangci-lint/-race each actually catch, and four full programs to review yourself.Available now

Start with Basics & Syntax if you are new to Go, or jump directly to Concurrency — the module that makes Go unique. If you already know Go and just want to sharpen review skills, go straight to Reading & Reviewing Go. Every term the course uses is collected in the Glossary.

Every language trades something away. Knowing what Go gave up is as useful as knowing what it bought.

What you getBenefitCost
GoroutinesConcurrency cheap enough to use freely — each starts with about 2 KB of stack and grows on demandA scheduler between you and the OS, and leaks that no compiler will catch for you
Garbage collectionNo manual memory management, no use-after-freePauses you do not control, and allocation costs that only a profiler reveals
Static binariesDeploy one file, no runtime to installLarger artifacts than an interpreted language ships
Implicit interface satisfactionPackages compose without importing each otherThe compiler cannot tell you what a type was meant to satisfy
A small languageThe whole spec fits in an afternoon; unfamiliar code stays readableVerbosity where other languages would give you a shortcut

💡 Real-world example

Kubernetes, Docker, Prometheus, etcd and Terraform are all written in Go. That is not a coincidence: each is a long-running networked service that has to ship as a single binary, handle many connections at once, and stay readable across a large contributor base — exactly the shape Go was designed for.