Добавьте callback или канал прогресса, передающий скопированные байты и общий размер, если он известен. Основная функция по-прежнему должна возвращать результат и ошибку.
Пользователь хочет получать прогресс копирования для progress bar. Как расширить сигнатуру?
Добавьте callback или канал прогресса, передающий скопированные байты и общий размер, если он известен. Основная функция по-прежнему должна возвращать результат и ошибку.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Добавьте callback или канал прогресса, передающий скопированные байты и общий размер, если он известен. Основная функция по-прежнему должна возвращать результат и ошибку.
Возможная сигнатура: Copy(ctx context.Context, dst io.Writer, src io.Reader, onProgress func(copied int64, total int64)) (int64, error). Это пример нового контракта, поскольку исходная сигнатура не приведена. Для неизвестного total показывают объём, а не процент; уведомления ограничивают по частоте и документируют поток вызова callback.