Пользователь хочет получать прогресс копирования для progress bar. Как расширить сигнатуру?

Добавьте callback или канал прогресса, передающий скопированные байты и общий размер, если он известен. Основная функция по-прежнему должна возвращать результат и ошибку.

Короткий ответ

Что ответить на собеседовании

Добавьте callback или канал прогресса, передающий скопированные байты и общий размер, если он известен. Основная функция по-прежнему должна возвращать результат и ошибку.

Подробный разбор

Ответ с пояснениями

Добавьте callback или канал прогресса, передающий скопированные байты и общий размер, если он известен. Основная функция по-прежнему должна возвращать результат и ошибку.

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

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее