Senior
Schreiben Sie eine Funktion processBatch, die ein Array von Strings in Chargen zu je 10 aufteilt, jede Charge über die Schnittstelle Saver speichert und bei Erfolg eine Benachrichtigung über die Schnittstelle Notifier sendet
sobes.tech KI
Antwort von 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`. Если на любом шаге возникает ошибка, функция возвращает её.