Как диагностировать гонку данных при unit-тестах в Go?

Запускайте целевые Go-тесты с -race и разбирайте оба конфликтующих стека обращения к памяти. Race detector замечает только пути, реально выполненные в запуске.

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

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

Запускайте целевые Go-тесты с -race и разбирайте оба конфликтующих стека обращения к памяти. Race detector замечает только пути, реально выполненные в запуске.

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

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

Запускайте целевые Go-тесты с -race и разбирайте оба конфликтующих стека обращения к памяти. Race detector замечает только пути, реально выполненные в запуске.

В тесте создайте контролируемое перекрытие горутин, а не случайный time.Sleep. Исправьте общий протокол доступа через mutex, атомики или передачу владения. Отсутствие предупреждения не доказывает отсутствия всех гонок, особенно если нужная ветка не выполнялась.

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

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

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

Подробнее