Go in a week
Twenty concept pages, grouped into seven days. Each page builds intuition first — what is this, why does it exist, what does it feel like to use — then shows a small Go program you can paste into the playground. Skim the day; pick the concept you're shaky on; finish the week with running code, not memorised syntax.
Intuition first · sample code throughout · paste-and-run
The seven-day plan
Not a strict schedule — a sequence. Each day's concepts compose into the next. On day 5 you'll write a goroutine that sends on a channel; that requires day 4's interfaces, day 3's errors, day 2's slices, day 1's functions. Don't skip ahead.
Day 1 · First contact
The toolchain, the type system, functions. Two hours and you can read Go.
Day 2 · Data shapes
Slices, maps, structs. Three structures that cover 80% of real Go code.
Day 3 · Flow & errors
Loops, errors, pointers. The "if err != nil" thing demystified.
Day 4 · Polymorphism, the Go way
Interfaces and generics. Where Go differs from every other language.
Day 5 · Concurrency primer
Goroutines and channels. The headline feature.
Day 6 · The standard library tour
io.Reader, io.Writer, net/http. The standard library does a lot.
Day 7 · Idiomatic Go
Modules, tests, idioms. From "Go compiles" to "Go that ships".
How each concept page works
Same shape every page. Designed for paste-and-run learning, not video binge.
- Intuition. The mental model in three sentences. Why this concept exists, what it feels like to use, where it fits.
- Try it. A small program — typically 10-20 lines — that you can paste into the Go playground and run. Annotated comments throughout.
- Build it up. Two or three variations on the program that expose the concept's edges. The "oh, that's what's happening" moments.
- Common mistakes. Three to five bugs that catch every newcomer. Each as a snippet with the fix.
- When it clicks. The signal that you've internalised the concept. The next page is the next concept.
Set up before day 1
- Install Go. Visit go.dev/dl. Pick your platform. The installer adds
goto your$PATH. - Verify. Open a terminal. Run
go version. Expectgo version go1.22.xor newer. - Or use the playground. Every code sample on these pages runs in go.dev/play without installing anything.
- Editor. VS Code with the official Go extension is the no-friction default. GoLand from JetBrains is the paid option.
- What you don't need. No build system. No package manager beyond
go mod(built in). No frameworks.
What "fluent in a week" actually means
At the end of seven focused days, you should be able to:
- Read any Go program and roughly understand what it does on first scan.
- Write a small HTTP server in 30 lines without looking anything up.
- Use slices, maps, and structs without re-reading the docs.
- Spawn a goroutine, send on a channel, and not be afraid of the result.
- Handle errors idiomatically — checking, wrapping, returning early.
- Write a table-driven test for any function you write.
Not mastery. Mastery comes from shipping things. Fluency means the syntax is invisible — you're thinking about the problem, not the language. That's the goal of seven days.
What this path doesn't cover
Three things are deliberately out of scope here. Each lives in its own corner of the site.
- The runtime internals. Goroutines as concept are here; the M:P:G scheduler, escape analysis, the GC — that's /codex/languages/go/internals/, ten deep dives that you should read after you can write Go fluently.
- Production patterns. Wiring an HTTP server with middleware, structured logging, observability, dependency injection — that's the design-pattern follow-up, not the language tour.
- Specific frameworks. Gin, Fiber, Echo, gRPC. These are not Go — they're libraries written in Go. Once the language is fluent, the framework picks are minutes, not days.