Track your progress while learning Go.
You can use this file directly or convert each section into GitHub Issues with checklists.
This repository includes GitHub issue templates for each learning section. You can create issues in two ways:
Run the provided script to create all issues at once:
./create-learning-issues.sh- Go to the Issues tab
- Click "New Issue"
- Select the appropriate template for the section you want to track
- Customize the title and add any additional notes
- Create the issue
Each issue template includes:
- ✅ Complete checklist of learning objectives
- 📚 Relevant resources and documentation links
- 📝 Space for your notes and code examples
- Setup & Tooling (
go run,go build,go mod) - Project structure & modules
- Variables, constants, type inference (
:=) - Basic types: string, int, float, bool, rune, byte
- Type conversions
- Control Flow (
if,for,switch, break/continue) - Functions (multiple return values, named return values, variadic)
- Pointers (value vs reference, passing by reference)
- Arrays & Slices (length, capacity, backing array, append, copy, slicing)
- Maps (declaration, CRUD, check existence with
value, ok := map[key]) - Structs (initialization, field tags, embedding)
- Methods (value vs pointer receivers)
- Interfaces (implicit implementation, empty interface, type assertions)
- Error Handling (
errortype, custom errors,errors.Is,errors.As,fmt.Errorfwith%w) - Packages (
init(), exported vs unexported) - Generics (type parameters, constraints) — Go 1.18+
- Reflection (
reflectpackage basics)
- Goroutines (lightweight threads, function calls as goroutines)
- Channels (unbuffered vs buffered,
selectstatement) - Concurrency Patterns (worker pools, fan-in / fan-out, context cancellation)
-
syncPackage (WaitGroup, Mutex, RWMutex, Once) - Atomic operations
- I/O & Files (
io,os,bufio) - Strings & Formatting (
strings,strconv,fmt) - Time (
timepackage, timers, tickers) - Networking (
net/httpbasics, JSON handling withencoding/json) - Testing (
testingpackage, table-driven tests, benchmarks & examples)
- Context (
context.Background,WithCancel,WithTimeout) - Error Groups (
errgrouppackage) - Custom Packages & Modules (semantic versioning, private modules)
- Performance (profiling with
pprof, escape analysis) - Memory Management (garbage collection basics)
- Web Development (
net/http, frameworks: Fiber, Gin, Echo) - Database (
database/sql, ORMs: GORM, Ent) - Microservices (gRPC, REST APIs)
- Deployment (building executables, cross-compilation, Dockerizing Go apps)
- Go Modules & Dependency Management
- Project structure (standard layout)
- Logging (
log,zap,zerolog) - Configuration management (
viper) - Linters & formatters (
gofmt,golangci-lint) - CI/CD pipelines
- Security practices (validations, safe concurrency)