Sobes.tech
Senior

processBatch fonksiyonunu yaz - dizi dizisini 10'luk partilere ayır, her bir partiyi Saver arayüzü ile kaydet, başarıyla kaydedildiyse Notifier arayüzü ile bildirim gönder

sobes.tech yapay zeka

AI'dan gelen yanıt

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`. Если на любом шаге возникает ошибка, функция возвращает её.