Poetry time! Go proverbs as limericks

The Go proverbs capture the essence of Go. Too concise for your taste? No worries, here is each proverb explained in a limerick.

Go Proverbs, Explained in Limericks

Simple, Poetic, Pithy

With a (not so) tiny bit of help from ChatGPT, the AI chatbot.

My sincere apologies to Edward Lear.


Once there was a Go programmer
Whose code was quite a bummer
But he followed the rules
Of the Go proverbs, and jewels
Of wisdom were soon discovered.

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

There once was a code that was grand
It shared memory, but not as planned
“Communicate, don’t share”
Was the lesson to bear
And thus, the code ran as it can.

Concurrency is not parallelism.

There once was a programmer named Joe.
He thought concurrency was parallelism, oh no!
But soon he learned that’s not true,
And now his code runs through,
Thanks to the wisdom of Go.

Channels orchestrate; mutexes serialize.

In Go, channels are quite grand,
They help processes take a stand,
While mutexes will make,
Things run in a straight line,
And keep the program in command.

The bigger the interface, the weaker the abstraction.

There once was an interface big and wide
It was quite the spectacle, oh how it tried
But alas, it was weak
For its abstraction was bleak
Less is more, it’s time to step aside

Make the zero value useful.

There once was a zero value so bland
It sat there with nothing in hand
But one clever programmer
Gave it a new demeanor
Now it’s useful and doing as planned.

interface{} says nothing.

There once was a type named interface{}
That didn’t reveal anything concise
It kept things quite vague
And left programmers in a rage
“What does this mean?” they would entice.

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

Though Gofmt’s style may not please
It’s still a tool that we seize
To format our code
In a consistent mode
And make our projects look sleek and concise.

A little copying is better than a little dependency.

A little copying’s not a crime
It can save you from dependency’s grime
Just be sure to give credit
Where credit is due
And avoid any potential legal time.

Syscall must always be guarded with build tags.

Syscall must be guarded with care
With build tags to protect and ensnare
Any potential threat
That might cause it to fret
And keep your program running fair.

Cgo must always be guarded with build tags.

Cgo must be guarded with tags
To prevent any potential snags
In the building process
It can save you from stress
And keep your program free of flags.

Cgo is not Go.

Cgo may seem like Go at first glance
But it’s quite a different circumstance
It allows for C code
To be integrated, bestowed
But it’s still not the same at a glance.

With the unsafe package there are no guarantees.

The unsafe package, it’s plain to see
Comes with no guarantees, can’t you agree?
It opens up doors
To potential pitfalls and roars
So use it cautiously, wisely, and free.

Clear is better than clever.

Clever code can be quite a feat
But clear code can’t be beat
It’s easy to read
And doesn’t mislead
So make sure your code is both clear and neat.

Reflection is never clear.

Reflection can be quite a fuss
It’s never clear, that much is a must
It can cause confusion
And lead to an illusion
So use it sparingly, if at all, and adjust.

Errors are values.

Errors, they’re not just a blight
But values that must be dealt with right
They can be stored
And later explored
To help your program take flight.

Don’t just check errors, handle them gracefully.

Checking errors is just the start
You must handle them with a graceful heart
Don’t just ignore them
Or let your program condemn
Be mindful of how you play your part.

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

Design the architecture, with care
Name the components, with flair
Document the details
So others won’t fail
And your project can thrive beyond compare.

Documentation is for users.

Documentation, it’s a must
For users, so they won’t be lost
It helps them understand
And follow your plan
So they can use your program without any fuss.

Don’t panic.

When panic strikes, don’t despair
Take a deep breath, and take the air
Remember that quote
And all will be afloat
“Don’t panic,” just breathe, and repair.

Happy coding!


Get the Applied Go Weekly Newsletter

Stay up to date in the world of Go. Get a hand-curated, commented list of articles and projects, and more, every week right in your inbox.

By subscribing, you agree to the privacy policy.

Powered by Buttondown.

Like this article? Tell your friends!