Go
A small language built for concurrency and simple deployments.
Go is taught here in 13 lessons, running from Go syntax, types and functions through to Profiling, performance and deployment. Each lesson takes one topic, shows the working code, and links onward to the next, so the course can be read straight through in order.
| Track | Back-end Development |
| Lessons | 13 |
| Level | Beginner to intermediate |
| Reading time | about 3 hours |
| Prerequisites | Helpful, but not required: HTTP |
Lessons
- Go syntax, types and functionsPackages, the small type system, zero values, and functions that return more than one value.
- Slices and mapsArrays versus slices, the backing-array trap, and how maps behave when a key is missing.
- Goroutines and channelsConcurrency as a language feature: cheap threads, channel communication, and the patterns for waiting, timing out and cancelling.
- Setting up Go: modules, toolchain and editorsInstalling Go, go mod init, go.mod and go.sum, module versus workspace mode, gofmt, go vet, and editor integration that actually helps.
- Structs, methods and interfacesStruct literals and embedding, pointer versus value receivers, implicit interface satisfaction, io.Reader and io.Writer, and type switches.
- Errors, defer and panicThe error interface, wrapping with fmt.Errorf and %w, errors.Is and errors.As, sentinel and custom types, defer ordering, and legitimate recover.
- Packages, project layout and dependenciesPackage naming and internal packages, cmd and pkg layout, adding and upgrading modules, vendoring, and semantic import versioning.
- The standard library toolkitstrings and strconv, time, the slices and maps helpers, encoding/json, flag, log/slog, os and io/fs, and a first net/http server.
- Testing, benchmarking and fuzzingTable-driven tests, subtests and helpers, benchmarks with allocation counts, fuzzing, httptest, and coverage that means something.
- Building HTTP servicesHandlers and the enhanced ServeMux routing patterns, middleware chains, JSON encoding, request limits and timeouts, graceful shutdown, and context propagation.
- Context, cancellation and concurrency patternscontext.Context and deadlines, errgroup, worker pools, fan-in and fan-out, select with defaults, sync primitives, and the race detector.
- Generics and modern Go idiomsType parameters and constraints, when generics clarify rather than over-abstract, iterator functions with range-over-func, and small-interface design.
- Profiling, performance and deploymentpprof for CPU and memory, escape analysis and allocations, the execution tracer, GOMAXPROCS in containers, and shipping static binaries.
More in Back-end Development
Node.js PHP Java HTTP Rust Spring Boot Laravel Ruby GraphQL
FAQ
How long does the Go course take?
It has 13 lessons, about 3 hours of reading. Expect roughly twice that if you type out and run every example.
Do I need prior experience for Go?
Not strictly. It helps to have read HTTP first, because some lessons build on it, but every lesson explains its own assumptions.
What should I read after Go?
Continue with Rust (13 lessons), the next course in Back-end Development.
Last refreshed 2026-09-18.