Go Rules & Best Practices Summary
Cross-cutting rule index linking every checklist on the site.
Search across all documentation pages
Cross-cutting rule index linking every checklist on the site.
These rules distill the go-rules section and point to specialized checklists for concurrency, modules, security, and performance.
v1.x.%w when callers inspect sentinels. Opaque messages break errors.Is chains.ctx; never store context in structs.go.sum diffs atomically with imports./v2 paths.go mod why -m on new requires.go fix modernizers change enforcement.Effective Go as a Living Standard, then Go Rules Quickstart, then Tier A of this page.
Effective Go Rules, then Concurrency, then Security before launch.
API Design and Module rules before tagging v1.
Automate objective subsets.
Keep judgment rules in review and ADRs.
Link here as canonical.
Add a short delta doc for org-only rules (logging vendor, RPC framework).
Quarterly and after Go minor releases.
Document benchmark evidence and scope the exception to the hot package.
Tier A mostly applies.
Concurrency and stdlib subsets need build-tag scoped checklists.
Yes for format, vet, module tidy, and govulncheck.
Interface design and operability still need human review.
Deep dives live in sibling sections: error-handling, packages-modules, security, performance-profiling, and linting-quality.
Stack versions: This page was written for Go 1.26.x (Green Tea GC default, go fix modernizers - verify patch at build), chi (latest - verify at build), gin (latest - verify at build), echo (latest - verify at build), google.golang.org/grpc (latest - verify at build), sigs.k8s.io/controller-runtime (latest - verify at build), kubebuilder (latest - verify at build), tinygo (latest - verify board targets at build), wazero (latest - verify at build), and golangci-lint (latest - verify linter set at build).
Reviewed by Chris St. John·Last updated Jul 18, 2026