我是Go的新手,几天前我刚刚开始学习并发性:-)。我有一个不同的库,它返回一个time.Duration类型,该类型具有Seconds,这是我想使用并存储在数据库中的float64精度值。
以下是我要完成的工作的相关内容:
type pResp struct {
address string
rtt time.Duration
sent int
recv int
}
stmt, err := db.Prepare("insert pings set domain = ?, packet_rtt = ?, packets_sent = ?, packets_recv = ?")
res, err := stmt.Exec(r.address, r.rtt.Seconds, r.sent, r.recv)
这是我得到的错误:
2019/08/26 19:57:35 sql: converting argument $2 type: unsupported type func() float64, a func
Process exiting with code: 0
MySQL中的列设置为double,应为64位...我不确定在这里哪里出错了。这是我正在使用的库的限制吗?谢谢。
答案 0 :(得分:3)
似乎您正在传递一流的函数func() float64
而不是实际的float64原语。该函数的来源看起来是r.rtt.Seconds
,应以r.rtt.Seconds()
的形式调用。参见Duration.Seconds。