next()方法是顺序的,有没有办法同时迭代循环?
我有一个200k行的结果集,我按顺序循环并在每一行上执行逻辑并希望将其拆分。
答案 0 :(得分:5)
您从查询中获取的sql.Rows无法同时使用(我相信)。
但你可以在goroutines做大部分繁重的工作。
以下是Play
上的示例(非工作但非常接近)package main
import "fmt"
import "sql"
type Row struct {
x string
y string
z string
}
func processor(ch chan Row) {
for row := range <-ch {
// be awesome
}
}
func main() {
ch := make(chan Row)
// two handler go routines (current processors)
go processor(ch)
go processor(ch)
rows := db.Query("select x,y,z from whatever")
for rows.Next() {
var row Row
if err := rows.Scan(&row.x, &row.y, &row.z); err != nil {
// do something with error
} else {
ch <- row
}
}
}