Skip to content

Instantly share code, notes, and snippets.

@aalu1418
Created April 14, 2023 11:34
Show Gist options
  • Save aalu1418/4cee86637cba7d926c9bc59beee5e770 to your computer and use it in GitHub Desktop.
Save aalu1418/4cee86637cba7d926c9bc59beee5e770 to your computer and use it in GitHub Desktop.
Go Proverbs

Simple, Poetic, Pithy


Don't communicate by sharing memory, share memory by communicating.

Concurrency is not parallelism.

Channels orchestrate; mutexes serialize.

The bigger the interface, the weaker the abstraction.

Make the zero value useful.

interface{} says nothing.

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

A little copying is better than a little dependency.

Syscall must always be guarded with build tags.

Cgo must always be guarded with build tags.

Cgo is not Go.

With the unsafe package there are no guarantees.

Clear is better than clever.

Reflection is never clear.

Errors are values.

Don't just check errors, handle them gracefully.

Design the architecture, name the components, document the details.

Documentation is for users.

Don't panic.


Proverbs from @rob_pike's inspiring talk at Gopherfest SV 2015 (video).

The Gopher character is based on the Go mascot designed by Renée French and copyrighted under the Creative Commons Attribution 3.0 license.

These proverbs are the basis of a talk by Rob Pike and the list may be updated when he next gives the talk.

Please read the contribution guidelines before opening an issue to nominate a new proverb.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment