What Makes a Good Go Package

A package is a boundary for change. Keep its public surface small, make dependencies point inward, and choose names that communicate the domain without cleverness. Good package design makes the next change cheaper.
Practical takeaway
Keep the example small enough to run, then make the failure mode visible. The best learning artifact is not a perfect abstraction; it is a concrete path from input to behavior, with the tradeoff explained next to the code.