Ответ
В Go sync.Map (Key House) — это конкурентно-безопасная мапа, которая оптимизирована для случаев, когда:
- Ключи часто читаются, но редко пишутся
- Необходима thread-safe работа без явных блокировок
Основные методы:
Store(key, value)— записьLoad(key)— чтениеLoadOrStore(key, value)— атомарная проверка+записьDelete(key)— удалениеRange(func(key, value))— итерация
Пример:
var m sync.Map
m.Store("foo", 42)
value, ok := m.Load("foo") // 42, true
m.Range(func(k, v interface{}) bool {
fmt.Println(k, v)
return true
})
Особенности:
- Не требует инициализации (zero-value готов к использованию)
- Менее эффективен при частых записях
- Нет типизации — используйте type assertion