Marcelo, that is eerily similar to how I handled this in another language for a legacy system which lacked the ability to use the proper Decimal format, although the base values were not numerator/denominator or even a decimal, but a raw value and an exponent. From those two, you can derive the Rational and then the Decimal quite easily.
And big.Rat makes this simple in Go as well, but at the end of the day a lot of things “think” in terms of a decimal-like number, and you’ll need to get data out of, or put data into, a system which only thinks in those terms (the merit of only supporting those types of values is a conversation for another day).
When pennies aren’t the smallest subdivision of currency you support, you have to get a little more clever.
All in all, what you’re suggesting basically lines up with my experiences, but I was hoping for a “true” Decimal type, as it’s simply a lot more natural a way to express operations between these types of values - at least, imho.
But this thread has given me a lot of good feedback, so I think I have a good sense of how to handle this in Go for the time being, until they add in a proper Decimal type.