Предполагая следующий пример:Разделите io.Reader - используйте ReadWriter?
func Execute(r io.Reader) {
// do soemthing
}
func BatchFromCSV(cr csv.Reader, batchSize int) {
n := 0
for {
r, err := cr.Read()
if err != nil {
if err != io.EOF {
panic(err)
}
break
}
n = n + 1
// Execute() when batchSize == n
}
}
Есть ли способ, чтобы дробить поступающую читателя, не создавая буфер какой-то, а затем, используя байты/string.NewReader()? Это место для ReadWriter? Если да, то каким образом я могу реализовать readWriter?
Что вы подразумеваете под словом «входящий читатель»? – JimB
вызов Выполнить для каждой партии. Csv из 300 строк с размером партии 200 приведет к тому, что вызов вызывается дважды. Эта часть тривиальна, мне интересен наиболее эффективный способ дать Execute читателю. Я не был уверен, если это то, где входят ReadWriters. – kwolfe
«io.ReadWriter» предназначен для чтения и записи, я не вижу, где вы собираетесь что-либо писать? (также, 'csv.Reader' не является' io.Reader', если это вас путает). – JimB