Go in Production: Practical Go Engineering
Explore Go patterns and tradeoffs through concrete examples and debugging lessons, from goroutines and context cancellation to profiling and memory use.
25 articles · by Niko Minadze
More articles
View archive-
Set up and maintain Go projects and tooling
Install the Go Toolchain and Configure PATH, GOROOT, and GOPATH on Linux, macOS, and Windows
Install Go using the standard installer for your platform, configure PATH, verify the selected binary, and initialize a module for your first project.
-
Represent and transform data safely
Go for Loops: Range Semantics and Loop Variable Capture Before and After Go 1.22
Understand how Go 1.22 module boundaries change captured loop variables, how older code behaves, and how to make captures safe in earlier modules.
-
Set up and maintain Go projects and tooling
Managing Go Versions and Toolchains Across Projects
Use Go 1.21 or newer to declare each module’s minimum language version and let the go command select the toolchain requested by that project.
-
Represent and transform data safely
Using Maps in Go: Declarations, Lookups, and Iteration
Learn how to initialize Go maps, distinguish missing keys from zero values, delete entries, and iterate without relying on order.
-
Set up and maintain Go projects and tooling
Set Up and Configure golangci-lint for a Go Project
Install a known golangci-lint release, create a v2 configuration, verify enabled linters, and keep local and CI commands aligned.





