Для передачи прогресса и результата между горутинами подходят каналы; для отмены — context, для ожидания — WaitGroup, для общего состояния — mutex или атомики.
Пользователь запустил копирование в горутине. Какие средства Go используются для обмена данными?
Для передачи прогресса и результата между горутинами подходят каналы; для отмены — context, для ожидания — WaitGroup, для общего состояния — mutex или атомики.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Для передачи прогресса и результата между горутинами подходят каналы; для отмены — context, для ожидания — WaitGroup, для общего состояния — mutex или атомики.
Разделите назначение механизмов: WaitGroup сам по себе не передаёт ошибку, а context не хранит результат копирования. Определите владельца закрытия канала и поведение при медленном читателе. Если прогресс не должен тормозить копирование, можно хранить последнее значение или пропускать промежуточные уведомления, сохранив обязательный финальный результат.