finds.dev← search

// the find

Rhymond/go-money

★ 1,894 · Go · MIT · updated Apr 2026

Go implementation of Fowler's Money pattern

Go implementation of Fowler's Money pattern — stores monetary values as integers (smallest currency unit) to avoid float rounding errors. Covers arithmetic, comparison, and allocation (split/allocate with penny distribution). Targeted at Go developers building anything that touches money: billing, invoicing, e-commerce.

Integer-based storage is the right call and the library commits to it correctly. The Split/Allocate penny distribution via round-robin is a real solution to a real problem that most homegrown money types get wrong. Full ISO 4217 currency coverage with constants means you're not stringing currency codes everywhere. Test coverage is solid and the API surface is small enough to read in 20 minutes.

No support for currency conversion — you can't add GBP to USD, which means the library hits a wall the moment you have a multi-currency system and have to bolt on exchange rates yourself. The formatter is baked in and not easily overridable, so if your locale needs differ from what's in db.go you're patching the library. Mutator types in mutator.go suggest some mutable-state patterns that contradict the otherwise value-type design. Last meaningful feature work appears to have stopped years ago — issues and PRs pile up with minimal maintainer engagement.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →