go-sql-driver / mysql-将float64插入mariadb(双列)会提供不受支持的类型func()float64,即func

时间:2019-08-27 00:06:10

标签: mysql go

我是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位...我不确定在这里哪里出错了。这是我正在使用的库的限制吗?谢谢。

1 个答案:

答案 0 :(得分:3)

似乎您正在传递一流的函数func() float64而不是实际的float64原语。该函数的来源看起来是r.rtt.Seconds,应以r.rtt.Seconds()的形式调用。参见Duration.Seconds