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
Unavailable First Program in Go - Level 2
Unavailable Numbers, Strings, and Data Input - Level 3
Unavailable Conditional Statements and Logic - Level 4
Unavailable for Loops - Level 5
Unavailable IDE Installation and Project Setup - Level 6
Unavailable Variables, Types, and Formatting - Level 7
Unavailable Numbers, Precision, and Overflows - Level 8
Unavailable Constants, iota, and Bitwise Operations - Level 9
Unavailable Functions and Error Return - Level 10
Unavailable Packages and Imports - Level 11
Unavailable Arrays and Slices (len/cap, make/append) - Level 12
Unavailable Slices and Memory Ownership - Level 13
Unavailable Slice Operations - Level 14
Unavailable Strings, Bytes, Runes, and UTF-8 - Level 15
Unavailable Maps (map) and set Pattern - Level 16
Unavailable Errors as Values - Level 17
Unavailable Error Wrapping (errors.Is/As) - Level 18
Unavailable defer, panic, and recover - Level 19
Unavailable Pointers and Value Semantics - Level 20
Unavailable Systematization of Collections and Errors - Level 21
Unavailable Structures and Tags (struct tags) - Level 22
Unavailable Methods and Receivers (receivers) - Level 23
Unavailable Composition (embedding) - Level 24
Unavailable Interfaces and nil Traps - Level 25
Unavailable Type Assertions (type assertion) - Level 26
Unavailable io.Reader/Writer and context - Level 27
Unavailable Generics - Level 28
Unavailable Package Architecture and Dependency Injection - Level 29
Unavailable Unit Tests (table-driven) - Level 30
Unavailable Formatting and Linters (gofmt, vet) - Level 31
Unavailable Advanced go test - Level 32
Unavailable Working with Git and GitHub - Level 33
Unavailable Debugging with Delve - Level 34
Unavailable Time and Timeouts (time) - Level 35
Unavailable Go Modules (go.mod) - Level 36
Unavailable Documentation (godoc, README) - Level 37
Unavailable Clean Code in Go - Level 38
Unavailable Quality Rules and Releases - Level 39
Unavailable Files, Paths, and Permissions - Level 40
Unavailable Input/Output Streams (io, bufio) - Level 41
Unavailable File System (fs) - Level 42
Unavailable Reliable Writing and Backups - Level 43
Unavailable Testing File Code - Level 44
Unavailable Resource Embedding (embed) - Level 45
Unavailable JSON Basics - Level 46
Unavailable Strict JSON and Versioning - Level 47
Unavailable Working with CSV - Level 48
Unavailable CLI Basics (flag) - Level 49
Unavailable Subcommands (FlagSet) - Level 50
Unavailable CLI UX (help, Exit Codes, Environment) - Level 51
Unavailable Output Formats and Filtering - Level 52
Unavailable Logging (log/slog) - Level 53
Unavailable CLI Testing - Level 54
Unavailable Build and Cross-Compilation (ldflags) - Level 55
Unavailable Error Standardization - Level 56
Unavailable HTTP and API Design - Level 57
Unavailable URL, Query Parameters, and Filters - Level 58
Unavailable HTTP Client - Level 59
Unavailable HTTP Server and Routing (ServeMux) - Level 60
Unavailable Routing Patterns (Go 1.22+) - Level 61
Unavailable CRUD and Validation - Level 62
Unavailable Middleware (Authorization, Limits, recover) - Level 63
Unavailable Graceful shutdown - Level 64
Unavailable HTTP Server Testing - Level 65
Unavailable Goroutines and WaitGroup - Level 66
Unavailable Channel Basics (Channels) - Level 67
Unavailable select, Timeouts, and Goroutine Leaks - Level 68
Unavailable Synchronization (sync, Mutex, atomic) - Level 69
Unavailable Worker pool - Level 70
Unavailable Advanced context - Level 71
Unavailable Race Detector and Benchmarks (pprof) - Level 72
Unavailable Course Summary and Further Development - Level 73
Unavailable Final Project