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