← All courses

Go: Zero to Production

Learn Go from variables, control flow, and functions through slices, maps, structs, interfaces, error handling, and pointers, then concurrency, generics, the standard library, and building a tested HTTP service. Run and edit real Go in your browser (compiled to WebAssembly), with a graded exercise in every lesson.

beginner Free gogolangconcurrencygenericsbackend
🎬 3 videos 📖 69 readings ⚡ 72 exercises · 783 min total
Start course →
15 modules · 72 lessons
0. Getting Started 3 lessons · 16 min
  1. 1 What runs here — and how to read a lesson 🎬 4 min
  2. 2 Your first program, line by line 🎬 5 min
  3. 3 Printing and formatting 🎬 7 min
1. Variables, Types & Constants 4 lessons · 32 min
  1. 4 Variables: naming your values 9 min
  2. 5 The basic types 8 min
  3. 6 Constants and `iota` 7 min
  4. 7 Type conversions 8 min
2. Control Flow 4 lessons · 31 min
  1. 8 Making decisions: `if` / `else` 7 min
  2. 9 `for`: the only loop 9 min
  3. 10 `switch`: cleaner branching 7 min
  4. 11 `defer`: cleanup that always runs 8 min
3. Functions 5 lessons · 43 min
  1. 12 Declaring functions 8 min
  2. 13 Multiple return values 9 min
  3. 14 Variadic functions 7 min
  4. 15 Functions as values 10 min
  5. 16 Closures 9 min
4. Collections: Slices, Arrays & Maps 6 lessons · 58 min
  1. 17 Arrays: fixed-size, and rarely what you want 8 min
  2. 18 Slices: the list you'll actually use 9 min
  3. 19 How slices really work: length, capacity and `append` 10 min
  4. 20 Sub-slices and shared memory 10 min
  5. 21 Maps: key/value lookups 11 min
  6. 22 Strings, bytes and runes 10 min
5. Structs & Methods 5 lessons · 51 min
  1. 23 Structs: your own types 11 min
  2. 24 Embedding: composition instead of inheritance 10 min
  3. 25 Methods 10 min
  4. 26 Pointer receivers 10 min
  5. 27 Constructors, validation and struct design 10 min
6. Interfaces 5 lessons · 53 min
  1. 28 What an interface is 10 min
  2. 29 Satisfying an interface: the rules 11 min
  3. 30 `any`, type assertions and type switches 11 min
  4. 31 Composing interfaces 11 min
  5. 32 The standard library's interfaces 10 min
7. Errors, Panic & Recover 5 lessons · 54 min
  1. 33 Errors are values 10 min
  2. 34 Sentinel errors and `errors.Is` 10 min
  3. 35 Wrapping: adding context without losing information 11 min
  4. 36 Custom error types 12 min
  5. 37 `panic` and `recover` 11 min
8. Pointers & Memory 4 lessons · 46 min
  1. 38 Pointers: `&` and `*` 11 min
  2. 39 Pointer or value? Choosing deliberately 11 min
  3. 40 `new` and `make` 13 min
  4. 41 Stack, heap and the garbage collector 11 min
9. Concurrency 7 lessons · 82 min
  1. 42 Goroutines 10 min
  2. 43 Channels 12 min
  3. 44 Buffered channels 10 min
  4. 45 `select`: waiting on several channels 11 min
  5. 46 The `sync` package: WaitGroup, Mutex and friends 15 min
  6. 47 Worker pools and pipelines 13 min
  7. 48 `context`: cancellation and deadlines 11 min
10. Generics 4 lessons · 43 min
  1. 49 Type parameters 11 min
  2. 50 Constraints 11 min
  3. 51 Generic types 10 min
  4. 52 When to use generics — and when not to 11 min
11. The Standard Library Tour 6 lessons · 73 min
  1. 53 Formatting and conversion: `fmt` and `strconv` 11 min
  2. 54 `time` 14 min
  3. 55 `encoding/json` 13 min
  4. 56 Sorting and searching 12 min
  5. 57 `io`, files and `bufio` 12 min
  6. 58 `regexp` 11 min
12. Testing & Tooling 4 lessons · 56 min
  1. 59 Writing tests 14 min
  2. 60 Table-driven tests 13 min
  3. 61 Benchmarks and profiling 13 min
  4. 62 Modules, formatting and the `go` tool 16 min
13. Capstones 3 lessons · 40 min
  1. 63 Capstone 1: a word-frequency report 12 min
  2. 64 Capstone 2: a concurrent job runner 13 min
  3. 65 Capstone 3: an inventory service 15 min
14. Building HTTP Services 7 lessons · 105 min
  1. 66 Your first HTTP handler 14 min
  2. 67 Routing with `ServeMux` 16 min
  3. 68 JSON APIs 13 min
  4. 69 Middleware 16 min
  5. 70 Structured logging with `log/slog` 15 min
  6. 71 The production server 14 min
  7. 72 Capstone: a tested JSON API 17 min

0 Comments