Middle+
What is a map in Go and how is it structured? What happens during concurrent writing without synchronization?
sobes.tech AI
Answer from AI
In Go, a map is a built-in data type that implements an associative array or hash table, where keys are mapped to values. Internally, a map is structured as a hash table with dynamic resizing and optimizations for fast access.
When writing to a map concurrently without synchronization (for example, without a mutex or other mechanisms), data races occur, leading to a runtime panic with the message "concurrent map writes". This is because the internal structures of a map are not thread-safe and are not designed for parallel modification.
An example of safe usage with a mutex:
var mu sync.Mutex
m := make(map[string]int)
mu.Lock()
m["key"] = 42
mu.Unlock()
Alternatively, use sync.Map from the standard library, which is designed for concurrent access.