Sobes.tech
Senior

Scrivere una funzione processBatch che divide un array di stringhe in batch di 10, salva ogni batch tramite l'interfaccia Saver e, in caso di successo, invia una notifica tramite l'interfaccia Notifier

sobes.tech AI

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