Syllabus & Study Plan
What the Go course covers, what you'll be able to do by the end, and a suggested twelve-week schedule with a checkpoint each week. Install Go first (lesson 2) — writing and running code yourself is the fastest way to learn.
Who this course is for
Programmers coming from Python, JavaScript, Java, C# or PHP who want a fast, simple compiled language; back-end and DevOps engineers who work with cloud tooling written in Go; and determined beginners who prefer a small language with strict, helpful tooling.
Learning outcomes
By the end of the course you will be able to:
- Install Go, create modules, manage dependencies, and build, format, vet and cross-compile programs.
- Use Go's types, constants, operators and explicit conversions correctly, and format output precisely with
fmt. - Write clear control flow with
if,switch,forandrange, and process Unicode text with bytes, runes,strings,strconvand regular expressions. - Work confidently with arrays, slices (including length, capacity and sharing), maps, and the
slicesandmapspackages. - Write functions with multiple results, variadic parameters, closures and
defer. - Model data with structs, pointers, methods, embedding and small interfaces, organised into packages with a minimal exported API.
- Handle failures idiomatically with errors, wrapping and inspection, and use
panic/recoveronly where appropriate. - Write generic functions, types and (Go 1.27) generic methods, and build lazy iterators with
iter.Seq. - Write correct concurrent code with goroutines, channels,
select, mutexes, worker pools andcontext, and find races with the race detector. - Use the standard library for files, streaming I/O, JSON, time, HTTP servers and clients, command-line tools and structured logging.
- Test, benchmark and profile code, apply modernizers with
go fix, and follow Go's conventions.
Course outline
| Part | Lessons | Focus |
|---|---|---|
| 1. Getting Started | 01–04 | Installing Go, first program, modules, the go command |
| 2. Basics | 05–13 | Syntax, variables, types, conversion, constants, operators, fmt, input |
| 3. Control Flow | 14–18 | if, switch, for, range, labels |
| 4. Strings | 19–23 | UTF-8, strings, strconv, builders, regular expressions |
| 5. Collections | 24–29 | Arrays, slices, the slices package, maps, sorting |
| 6. Functions | 30–35 | Results, variadics, closures, defer, recursion |
| 7. Types & Methods | 36–43 | Structs, pointers, methods, embedding, interfaces, packages |
| 8. Errors | 44–46 | Errors, wrapping, panic and recover |
| 9. Generics & Iterators | 47–50 | Type parameters, constraints, generic methods, iterators |
| 10. Concurrency | 51–56 | Goroutines, channels, select, mutexes, patterns, context |
| 11. Standard Library | 57–64 | Files, I/O, JSON, time, HTTP, CLI tools, slog |
| 12. Tools & Projects | 65–69 | Testing, benchmarks, Go 1.27, best practices, final project |
Twelve-week study plan
About five to seven hours a week. Each week ends with a checkpoint — if you can do it comfortably, move on.
| Week | Lessons | Checkpoint |
|---|---|---|
| 1 | 01–08 | Create a module with a unit-conversion program that prints a formatted table. |
| 2 | 09–18 | Read numbers from standard input, reject invalid lines, and print statistics with a grade for each. |
| 3 | 19–23 | Write a text analyser that counts words and characters correctly for accented text and finds e-mail addresses with a regex. |
| 4 | 24–29 | Summarise a list of sales records into totals per region with a map, sorted by total. |
| 5 | 30–35 | Refactor earlier programs into small functions; use closures with slices.SortFunc and defer for clean-up. |
| 6 | 36–43 | Model a library with Book, Member and Loan types in their own package, with an interface for notifications. |
| 7 | 44–50 | Add sentinel and wrapped errors to your library, and a generic Set type with an iterator. |
| 8 | 51–54 | Process a batch of jobs concurrently with goroutines and channels, and prove it race-free with -race. |
| 9 | 55–58 | Build a worker pool with cancellation via context that reads and writes files. |
| 10 | 59–62 | Write a JSON HTTP API for your library and a small client that calls it with timeouts. |
| 11 | 63–66 | Turn the client into a command-line tool with subcommands; add structured logging, tests and a benchmark. |
| 12 | 67–69 | Complete the task tracker project and at least three of its challenges. |
Final step: take the quiz and aim for 25 out of 30 or better, then work through the programming challenges on the exercises page.
Faster tracks
- Know another language well? Skim Parts 1–3, then focus on slices (25–26), interfaces (40–41), errors (44–45) and concurrency (51–56).
- Returning to Go after a few years? Read lessons 16–17 (range over integers and per-iteration loop variables), 27–28 (
slicesandmaps), 45, 47–50, 51 (WaitGroup.Go), 59 (json/v2) and 67. - Heading for back-end work? Make sure you're comfortable with Parts 10 and 11 and the final project — servers, contexts, JSON and testing are the core of Go services.
Practice resources
- Playground — a starter program to experiment with.
- Exercises — 50 fill-in-the-blank tasks and five programming challenges.
- Quiz — 30 questions with explanations.