Senior
32
Мәтіндер массивін 10-ден бөлетін, әр батчты Saver интерфейсі арқылы сақтайтын және сәтті болған жағдайда Notifier интерфейсі арқылы хабарландыру жіберетін processBatch функциясын жазыңыз.
Сұралған компаниялар
AI-дан жауап
sobes.tech 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`. Если на любом шаге возникает ошибка, функция возвращает её.