open atlas

go

Go, zero to senior

A small language for big systems — types, errors, interfaces, and concurrency that actually scales.

13 units·45 lessons·~14 h

Start track
01

Types, errors, interfaces

Go's whole design is explicitness: values over references, errors as values, interfaces satisfied implicitly.
02

Goroutines, channels, the memory model

Goroutines are cheap because the runtime schedules them; channels and the memory model are the safety contract.
03

HTTP services with the stdlib

net/http is a production framework: routing since 1.22, middleware as wrappers, and timeouts you must set yourself — or leak connections.
04

Testing and the Go toolchain

Table tests are the idiom, fuzzing and benchmarks are built in, and the toolchain (vet, race, pprof hooks) is half the language's value.
05

Generics and package design

Generics remove copy-paste, not interfaces: constraints are type sets, instantiation is compile-time, and most code still wants an interface.
06

Runtime, GC, and profiling

Go's GC trades throughput for sub-millisecond pauses; escape analysis decides stack vs heap, and pprof tells you which myth you believed.
07

Production patterns

Production Go is discipline: context flows down every call, config is explicit, logs are structured slog, retries respect budgets.
08

Data access: database/sql and beyond

database/sql is a pool, not a connection: misSized pools starve under load, transactions pin connections, sqlc generates the boring code.
09

gRPC and API contracts

gRPC is a contract compiler: protobuf schemas version by addition only, breaking changes need new fields, gateways translate to REST.
10

Advanced concurrency

errgroup propagates the first error and cancels siblings; pipelines must die on context cancel or leak goroutines; backpressure beats buffers.
11

Security and the supply chain

Use crypto from the stdlib and nothing clever: constant-time compares, real randomness, govulncheck in CI, minimal images by default.
12

Deployment and operations

A Go binary is the deploy artifact: static linking and cross-compilation, scratch containers, health probes wired to real readiness.
13

Systems programming projects

Go is a systems glue language: CLI tools with honest exit codes, daemons under systemd, processes, files and locks done right.

Build with this track

Guided projects that exercise what you learn here.

Next track

Docker, containers as a system

Past 'write a Dockerfile' into how images, namespaces, BuildKit and registries actually work — and how containers behave in production.