Пакетирование максимум 10 за один раз по вводу - PullRequest
0 голосов
/ 17 декабря 2018

Я пытаюсь и не могу выполнить простую задачу пакетной обработки ввода, не более 10 одновременно.Следующий код почти работает:

func batchMe(input []int) {
    fmt.Println("Length", len(input), len(input)/10)
    for i := 0; i <= len(input)/10; i++ {
        from := i * 10
        to := (i + 1) * 10
        if len(input) < to {
            to = len(input)
        }
        fmt.Println("Batch", i, input[from:to])
    }

Но из https://play.golang.org/p/_UgFD1iDyse видно, что он печатает:

Length 10 1
Batch 0 [1 2 3 4 5 6 7 8 9 10]
Batch 1 []

Я не хочу печатать пакет 1 вслучай 10 элементов!

Возможно, здесь есть упрощение кода?

1 Ответ

0 голосов
/ 17 декабря 2018

Элегантное решение от Tv on # go-nuts выглядит так:

for len(input) > 0 {
    n := 10
    if n > len(input) {
        n = len(input)
    }
    chunk := input[:n]
    input = input[n:]
    fmt.Println("Batch", chunk)
}

https://play.golang.org/p/Y3U8dUD7Zrr

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...