In Go, maps are built‑in hash tables that associate keys with values of a specified type. They are declared with the syntax map[KeyType]ValueType and can be created using a map literal, the make function, or by assigning nil and later initializing. The zero value of a map is nil, and any read from a nil map returns the zero value of the element type without panicking, while writes to a nil map cause a runtime panic. Maps are reference types; assigning one map to another copies the reference, not the underlying data, so modifications affect both variables. The built‑in functions len, delete, and the comma‑ok idiom are used to query size, remove entries, and test for key existence respectively. Iterating over a map with for range yields keys in a nondeterministic order, and the iteration order changes from one run to the next. Go’s map implementation automatically grows and shrinks as needed, but the growth factor and rehashing are implementation details. Concurrency requires synchronization; maps are not safe for concurrent reads and writes without explicit locking or using sync.Map.