用例
我想在通过通道接收的 MySQL 数据库中保存大量数据。出于性能原因,我以 10 件为一组处理它们。我每 3 小时才收到一次输入项目。
问题
假设我得到 10004 个项目,将剩下 4 个项目,因为我的 go 例程在批量“冲走”之前等待 10 个项目。我想确保它创建一个少于 10 个项目的批次,以防该通道中没有更多项目(然后生产者也关闭了通道)。
代码:
// ProcessAudits sends the given audits in batches to SQL
func ProcessAudits(done <-chan bq.Audit) {
var audits []bq.Audit
for auditRow := range done {
user := auditRow.UserID.StringVal
log.Infof("Received audit %s", user)
audits = append(audits, auditRow)
if len(audits) == 10 {
upsertBigQueryAudits(audits)
audits = []bigquery.Audit{}
}
}
}
我是 Go 的新手,我不确定如何正确实施它?
红颜莎娜
拉莫斯之舞
相关分类