Используйте структуру с полями ID, Data и Err. Не кодируйте ошибку пустым []byte: пустой успешный результат может быть допустимым.
Какую структуру передавать в канал результатов
Используйте структуру с полями ID, Data и Err. Не кодируйте ошибку пустым []byte: пустой успешный результат может быть допустимым.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Параллельные workers Go обрабатывают задания с ID и возвращают []byte или ошибку. Как описать сообщение канала, чтобы collector сопоставлял результаты и не путал ошибку с пустыми данными?
Ответ
Используйте структуру с полями ID, Data и Err. Не кодируйте ошибку пустым []byte: пустой успешный результат может быть допустимым.
Например: type Result struct { ID string; Data []byte; Err error }. Если возможны повторные попытки, добавьте номер попытки или версию операции для отбрасывания запоздалого результата. После отправки данные нельзя менять без согласованного владения; при повторном использовании рабочего буфера сделайте копию. Закрывает канал отправляющая сторона после завершения всех workers.