感觉是 Gorm 的 Bug,在使用 Pluck 获取 Sum 结果时总是报错。 而用 Scan 就没有问题。
可行的做法 Scan
type FHSum struct {
Total float64
}
var total FHSum
db.Select("sum(money) as total").Scan(&total)
这样能获取到 sum 的结果。
Pluck float64 报错
var total []float64 // slice 的第一个数字就是 sum 值
db.Select("sum(money) as total").Pluck("total", &total)
执行时报错:
reflect: call of reflect.Value.Field on float64 Value
但是对于 int 字段,用这种方式一直没问题。
float32 执行时报错
reflect: call of reflect.Value.Field on float32 Value
int 执行时报错
sql: Scan error on column index 0, name "total": converting driver.Value type []uint8 ("1001.23") to a int: invalid syntax
uint8 执行时报错
sql: Scan error on column index 0, name "total": converting driver.Value type []uint8 ("1001.23") to a uint8: value out of range
微信关注我哦 👍
我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式