Go SELF
Become a Go developer through practice. From "Hello World" to production-ready microservices with tests and CI/CD. 72 levels and 1000+ tasks with instant validation. Build REST APIs, work with concurrency, test and profile code — every task brings you closer to real work. The most direct path to a profession that pays 40% more.
- Level 1
Locked First program in Go - Level 2
Locked Numbers, strings, and data input - Level 3
Locked Conditionals and logic - Level 4
Locked for loops - Level 5
Locked IDE installation and project setup - Level 6
Locked Variables, types, and formatting - Level 7
Locked Numbers, precision, and overflows - Level 8
Locked Constants, iota, and bitwise operations - Level 9
Locked Functions and returning errors - Level 10
Locked Packages and imports - Level 11
Locked Arrays and slices (len/cap, make/append) - Level 12
Locked Slices and memory ownership - Level 13
Locked Slice operations - Level 14
Locked Strings, bytes, runes, and UTF-8 - Level 15
Locked Maps (map) and set pattern - Level 16
Locked Errors as values - Level 17
Locked Error wrapping (errors.Is/As) - Level 18
Locked defer, panic, and recover - Level 19
Locked Pointers and value semantics - Level 20
Locked Systematizing collections and errors - Level 21
Locked Structs and tags (struct tags) - Level 22
Locked Methods and receivers - Level 23
Locked Composition (embedding) - Level 24
Locked Interfaces and nil traps - Level 25
Locked Type assertions (type assertion) - Level 26
Locked io.Reader/Writer and context - Level 27
Locked Generics - Level 28
Locked Package architecture and dependency injection - Level 29
Locked Unit tests (table-driven) - Level 30
Locked Formatting and linters (gofmt, vet) - Level 31
Locked Advanced go test - Level 32
Locked Working with Git and GitHub - Level 33
Locked Debugging with Delve - Level 34
Locked Time and timeouts (time) - Level 35
Locked Go Modules (go.mod) - Level 36
Locked Documentation (godoc, README) - Level 37
Locked Clean code in Go - Level 38
Locked Quality rules and releases - Level 39
Locked Files, paths, and permissions - Level 40
Locked I/O streams (io, bufio) - Level 41
Locked File system (fs) - Level 42
Locked Reliable writing and backups - Level 43
Locked Testing file code - Level 44
Locked Embedding resources (embed) - Level 45
Locked JSON basics - Level 46
Locked Strict JSON and versioning - Level 47
Locked Working with CSV - Level 48
Locked CLI basics (flag) - Level 49
Locked Subcommands (FlagSet) - Level 50
Locked CLI UX (help, exit codes, environment) - Level 51
Locked Output formats and filtering - Level 52
Locked Logging (log/slog) - Level 53
Locked Testing CLI - Level 54
Locked Build and cross-compilation (ldflags) - Level 55
Locked Error standardization - Level 56
Locked HTTP and API design - Level 57
Locked URLs, query parameters, and filters - Level 58
Locked HTTP client - Level 59
Locked HTTP server and routing (ServeMux) - Level 60
Locked Routing patterns (Go 1.22+) - Level 61
Locked CRUD and validation - Level 62
Locked Middleware (authorization, limits, recover) - Level 63
Locked Graceful shutdown - Level 64
Locked Testing HTTP servers - Level 65
Locked Goroutines and WaitGroup - Level 66
Locked Channel basics (Channels) - Level 67
Locked select, timeouts, and goroutine leaks - Level 68
Locked Synchronization (sync, Mutex, atomic) - Level 69
Locked Worker pool - Level 70
Locked Advanced context - Level 71
Locked Race detector and benchmarks (pprof) - Level 72
Locked Course summary and further development - Level 73
Locked Final project