Какую структуру передавать в канал результатов

Используйте структуру с полями 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.

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

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

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

Подробнее