我正在使用gin gonic框架并构建了一个JSON API。
我想要一个新的终点,但其中一个值是小数。我创建了以下结构:
type AcceptedTerms struct {
Id int64
FirstName string
LastName string
Fee ***DECIMAL***
Date *time.Time
}
我的控制器代码片段:
query = "SELECT " +
"AcceptedTerms.* " +
"FROM AcceptedTerms " +
"ORDER BY " + sort_by + " " + order_by +
" LIMIT " + limit2 +
" OFFSET " + offset2`
_, err := dbmap.Select(&response.AcceptedTerms, query)
我应该为十进制设置什么类型?我希望用户能够发布小数,例如10.44或12.00等而不是“10.44”或“12.00”。我还希望像上面那样返回值而不是字符串。
更新
我试图对我的Struct进行此操作,但它仍然没有显示为2位小数
type AcceptedTerms struct {
Id int64
FirstName string
LastName string
Fee Number
Date *time.Time
}
type Number float64
func (n Number) MarshalJSON() ([]byte, error) {
return []byte(fmt.Sprintf("%.2f", n)), nil
}
由于
答案 0 :(得分:1)
float32
是否会造成任何问题?由于MySQL使用32位来存储DECIMAL
,float32
应该足够好了。
答案 1 :(得分:0)
要将MySQL值扫描到Go vars,最好的做法是使用sql.Null ...类型。特别是当列可以为空时。
对于小数,它可以是sql.NullFloat64:
importScripts()