{} The Go Reference

Talking to the OS

Systems Programming in Go

Go is a systems language — static binaries, a tiny runtime, and direct access to the OS. From system calls and file descriptors to files, processes and signals, then pipes and Unix sockets for IPC, each page pairs a clear mental model with idiomatic Go you can run right here (or, for kernel-only calls, study in fenced examples).

Your systems progress

Mark a topic “learned” on its page and watch the bars fill.

Skill map

Learned nodes light up — the glowing one is your next step. Click any node to jump in.

The OS Interface

Where Go meets the kernel — why Go suits systems work, system calls and the syscall/x/sys packages, file descriptors, and the standard streams.

Files & Directories

Working the filesystem — permissions, walking directory trees, computing sizes and finding duplicates, symlinks, temp files, and crash-safe atomic writes.

Processes & Events

Programs that react — launching processes with os/exec, handling OS signals for graceful shutdown, and scheduling, tickers, and watching the filesystem for changes.

IPC & Sockets

Talking between processes — anonymous and named pipes, Unix domain sockets (and HTTP over them), and memory-mapped files for zero-copy sharing.

🐹 Why Go shows up in your infrastructure

Docker, Kubernetes, etcd, Prometheus, Terraform — the cloud's plumbing is written in Go. A single static binary that cross-compiles anywhere, a runtime light enough to talk to the kernel directly, and goroutines that make "a process per connection" cheap: that combination is why Go quietly runs the machines under your machines.