Sobes.tech
Senior

Parašykite funkciją processBatch, kuri padalija eilutžių masyvą į 10 elementų partijas, kiekvieną partiją išsaugo per Saver sąsają ir sėkmės atveju siunčia pranešimą per Notifier sąsają

sobes.tech AI

Atsakymas iš AI

go package main

import "fmt"

// Интерфейс для сохранения батча type Saver interface { Save(batch []string) error }

// Интерфейс для уведомления type Notifier interface { Notify(batch []string) error }

func processBatch(items []string, saver Saver, notifier Notifier) error { batchSize := 10 for i := 0; i < len(items); i += batchSize { end := i + batchSize if end > len(items) { end = len(items) } batch := items[i:end]

	err := saver.Save(batch)
	if err != nil {
		return fmt.Errorf("failed to save batch: %w", err)
	}

	err = notifier.Notify(batch)
	if err != nil {
		return fmt.Errorf("failed to notify batch: %w", err)
	}
}
return nil

}


Функция разбивает входной срез строк на батчи по 10 элементов, сохраняет каждый батч через `Saver.Save` и при успешном сохранении отправляет уведомление через `Notifier.Notify`. Если на любом шаге возникает ошибка, функция возвращает её.