Ответ
Нет, стандартный map в Go не потокобезопасен для параллельных записей. Параллельные записи могут привести к race condition и панике.
Для потокобезопасной работы с map есть несколько вариантов:
- Использовать
sync.Mutexилиsync.RWMutexдля защиты доступа:
var m = make(map[string]int)
var mu sync.Mutex
func safeWrite(key string, val int) {
mu.Lock()
defer mu.Unlock()
m[key] = val
}
- Использовать
sync.Map(оптимально для read-heavy workloads):
var sm sync.Map
sm.Store("key", 42) // Потокобезопасная запись
Важно: sync.Map не всегда быстрее обычного map + mutex, нужно тестировать под конкретную нагрузку.