货币表示的一个关键问题是选择什么作为基准单位。主流做法有两种:
copy
// 以分为单位表示货币
type Money struct {
Amount int64
Currency string
}
// 例如:¥10.99表示为:
money := Money{Amount: 1099, Currency: "CNY"}
copy
import "github.com/shopspring/decimal"
type Money struct {
Amount decimal.Decimal
Currency string
}
// 例如:¥10.99表示为:
amount := decimal.NewFromFloat(10.99)
money := Money{Amount: amount, Currency: "CNY"}
有一些Go语言的第三方库专门用于处理货币:
copy
// 使用go-money库
import "github.com/Rhymond/go-money"
// 创建10.99人民币
money := money.New(1099, "CNY")
最终,选择以最小货币单位(如分)作为基准单位,并使用整数表示,是Golang中处理货币的最佳实践之一。