for scanner.Scan() {
select {
case <-ctx.Done():
log.Infoln("signal cancel")
break
default:
// тут что-то делаем
}
}
if err := scanner.Err(); err != nil && err != io.EOF {
log.Errorln(err)
}
close(tasks)
}()
подскажите, почему не прерывается цикл сканера при завершении контекста?
весь цикл все равно пробегается до конца и выполняется только вывод лога "signal cancel" по количеству строчек в сканере
Добавьте 'label' к вашему for. И прерывайте его LOOP: for{ select { ...... break LOOP
Обсуждают сегодня