Senior
What is a map in Go, how is it structured internally, what is a collision, and how is it handled?
sobes.tech AI
Answer from AI
In Go, a map is a built-in data type for storing key-value pairs with fast access. Inside, a map implements a hash table mechanism.
Internal structure:
- The key is hashed into an integer value.
- The hash determines the index of the bucket where pairs are stored.
- Each bucket contains multiple key-value pairs.
Collision — a situation where different keys have the same hash and fall into the same bucket. To handle this, Go uses:
- Storing multiple pairs in one bucket.
- When there are many collisions, rehashing occurs with an increase in the number of buckets.
This allows maintaining quick access to elements even during collisions.
Example of using a map:
m := make(map[string]int)
"apple" := 5
fmt.Println(m["apple"]) // 5
Thus, a map in Go is an efficient structure for an associative array with internal optimization to minimize the impact of collisions.