【发布时间】:2016-06-04 19:06:45
【问题描述】:
我需要得到*sql.Rows 的长度之前我开始我的Next() 循环来获取值。一种方法是通过循环 Next() 两次来创建行切片,获取计数,然后循环遍历该新切片以提取值,但这似乎效率很低,所以我希望有更好的方法做这个。
查看文档,我没有看到我可以使用的 Count 函数或 Length 函数:https://golang.org/pkg/database/sql/#Rows
查看 Go 代码,我在 struct 中看不到任何可以帮助我的东西(尽管我可能遗漏了一些东西,所以希望能在这里看到第二双眼睛):https://github.com/golang/go/blob/master/src/database/sql/sql.go#L1714
肯定有比只循环两次 Next() 更好的方法吗?
我意识到我也可以做一个单独的计数查询,甚至在我的另一个选择中包含一个 count(*),但我也宁愿避免这种情况。这是一个 Go ORM 项目,我不想让 select 语句过于复杂,我宁愿尽可能避免篡改他们构建的请求。
谢谢。
【问题讨论】:
-
如何循环 r.Next() 两次()?第二次是空的。