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:

  1. Install Go, create modules, manage dependencies, and build, format, vet and cross-compile programs.
  2. Use Go's types, constants, operators and explicit conversions correctly, and format output precisely with fmt.
  3. Write clear control flow with if, switch, for and range, and process Unicode text with bytes, runes, strings, strconv and regular expressions.
  4. Work confidently with arrays, slices (including length, capacity and sharing), maps, and the slices and maps packages.
  5. Write functions with multiple results, variadic parameters, closures and defer.
  6. Model data with structs, pointers, methods, embedding and small interfaces, organised into packages with a minimal exported API.
  7. Handle failures idiomatically with errors, wrapping and inspection, and use panic/recover only where appropriate.
  8. Write generic functions, types and (Go 1.27) generic methods, and build lazy iterators with iter.Seq.
  9. Write correct concurrent code with goroutines, channels, select, mutexes, worker pools and context, and find races with the race detector.
  10. Use the standard library for files, streaming I/O, JSON, time, HTTP servers and clients, command-line tools and structured logging.
  11. Test, benchmark and profile code, apply modernizers with go fix, and follow Go's conventions.

Course outline

PartLessonsFocus
1. Getting Started01–04Installing Go, first program, modules, the go command
2. Basics05–13Syntax, variables, types, conversion, constants, operators, fmt, input
3. Control Flow14–18if, switch, for, range, labels
4. Strings19–23UTF-8, strings, strconv, builders, regular expressions
5. Collections24–29Arrays, slices, the slices package, maps, sorting
6. Functions30–35Results, variadics, closures, defer, recursion
7. Types & Methods36–43Structs, pointers, methods, embedding, interfaces, packages
8. Errors44–46Errors, wrapping, panic and recover
9. Generics & Iterators47–50Type parameters, constraints, generic methods, iterators
10. Concurrency51–56Goroutines, channels, select, mutexes, patterns, context
11. Standard Library57–64Files, I/O, JSON, time, HTTP, CLI tools, slog
12. Tools & Projects65–69Testing, 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.

WeekLessonsCheckpoint
101–08Create a module with a unit-conversion program that prints a formatted table.
209–18Read numbers from standard input, reject invalid lines, and print statistics with a grade for each.
319–23Write a text analyser that counts words and characters correctly for accented text and finds e-mail addresses with a regex.
424–29Summarise a list of sales records into totals per region with a map, sorted by total.
530–35Refactor earlier programs into small functions; use closures with slices.SortFunc and defer for clean-up.
636–43Model a library with Book, Member and Loan types in their own package, with an interface for notifications.
744–50Add sentinel and wrapped errors to your library, and a generic Set type with an iterator.
851–54Process a batch of jobs concurrently with goroutines and channels, and prove it race-free with -race.
955–58Build a worker pool with cancellation via context that reads and writes files.
1059–62Write a JSON HTTP API for your library and a small client that calls it with timeouts.
1163–66Turn the client into a command-line tool with subcommands; add structured logging, tests and a benchmark.
1267–69Complete 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 (slices and maps), 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.