Skip to main content

Go Proverbs

The Go Proverbs are a collection of short sayings that capture the philosophy behind the Go programming language. They were popularized by Rob Pike and reflect the language’s emphasis on simplicity, clarity, and pragmatic engineering.

These proverbs often serve as guidelines for writing idiomatic Go, rather than strict rules. Understanding them helps developers write code that aligns with the design intent of the language.

Original source: https://go-proverbs.github.io/


Don't communicate by sharing memory; share memory by communicating

pk_todo


Concurrency is not parallelism

pk_todo


Channels orchestrate; mutexes serialize

pk_todo


The bigger the interface, the weaker the abstraction

pk_todo


Make the zero value useful

pk_todo


interface says nothing

pk_todo


Gofmt's style is no one's favorite, yet gofmt is everyone's favorite

pk_todo


A little copying is better than a little dependency

pk_todo


Syscall must always be guarded with build tags

pk_todo


Cgo must always be guarded with build tags

pk_todo


Cgo is not Go

pk_todo


With the unsafe package there are no guarantees

pk_todo


Clear is better than clever

pk_todo


Reflection is never clear

pk_todo


Errors are values

pk_todo


Don't just check errors, handle them gracefully

pk_todo


Design the architecture, name the components, document the details

pk_todo


Documentation is for users

pk_todo


A little duplication is far cheaper than the wrong abstraction

pk_todo