В чем разница между Map и sync.Map

«В чем разница между Map и sync.Map» — вопрос из категории Golang, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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 — для высоконагруженных сценариев с редкими записями