Что будет если изменить map во время range?

Middle
199 просмотров
AFK Offer AI

Удалять ключи — безопасно, спецификация разрешает. Добавлять новые ключи — разрешено, но они могут не попасть в текущую итерацию (или могут — непредсказуемо). Изменять значения по существующим ключам — ок. Главное: concurrent доступ к map из разных горутин (одна пишет, другая range) — это data race и crash. Для этого нужен mutex или sync.Map.

Следующий вопрос

Как работает sync.Map внутри?