Требуется реализовать функцию func Pipe(p Producer, c Consumer) error, которая:
Условие
Заголовок раздела «Условие»Требуется реализовать функцию func Pipe(p Producer, c Consumer) error, которая:
- читает данные из источника и передает их потребителю. Считаем, что источник условно бесконечный;
- при чтении формирует буфер, максимальный размер которого задается константой MaxItems и передает данные потребителю только когда буфер близок к заполнению;
- после обработки данных потребителем, вызывает для них метод Commit, передавая в него cookies в той последовательности, в которой они были получены от источника;
- в случае возникновения ошибок - функция должна завершиться. Если ошибка возникла на вызове Commit - больше никакие данные не должны быть закоммичены (т.к. в противном случае нарушится очередность коммитов).
type Producer interface { // Next returns: // - batch of items to be processed // - cookie to be commited when processing is done // - error Next() (items []any, cookie int, err error) // Commit is used to mark data batch as processed Commit(cookie int) error}
const MaxItems = 9999
type Consumer interface { Process(items []any) error}
func Pipe(p Producer, c Consumer) error {}Решение
Заголовок раздела «Решение»Источник: Yandex / Яндекс
← Требуется написать алго с учетом эффект… · Все задачи · Go · Нам нужно передать данные из некоторого… →