Sobes.tech
Senior

Γράψτε τη λειτουργία processBatch - διαιρέστε έναν πίνακα συμβολοσειρών σε παρτίδες των 10, αποθηκεύστε κάθε παρτίδα μέσω της διεπαφής Saver, και με επιτυχία στείλτε ειδοποίηση μέσω της διεπαφής Notifier

sobes.tech AI

Απάντηση από 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`. Если на любом шаге возникает ошибка, функция возвращает её.