Ответ
Map — это обычный словарь в Go, небезопасный для конкурентного доступа. При одновременной записи или чтении из разных горутин может привести к панике или повреждению данных.
sync.Map — потокобезопасная реализация, оптимизированная для случаев, когда:
- Ключи часто читаются, но редко изменяются
- Разные горутины работают с разными наборами ключей
Пример:
var m sync.Map
// Запись
m.Store("key", 42)
// Чтение
val, ok := m.Load("key") // 42, true
// Удаление
m.Delete("key")
Когда использовать:
map— если нет конкурентности или используется мьютексsync.Map— для высоконагруженных сценариев с редкими записями