m := map[string]int{"a": 1}
m["b"] = 2
v, ok := m["c"] // 0, false
delete(m, "a")
for k, v := range m { ... } // порядок не гарантирован
Случайный порядок сделан намеренно, чтобы код не опирался на детали реализации. Нужен порядок — собрать ключи, отсортировать (slices.Sorted(maps.Keys(m))) и обойти.
Конкурентность. Мапа не потокобезопасна. Рантайм обнаруживает одновременную запись и аварийно завершает программу (это не panic, его нельзя перехватить). Варианты: sync.RWMutex вокруг мапы; sync.Map — для сценариев «много чтений, ключи редко добавляются»; шардирование по нескольким мапам с отдельными мьютексами.
Элементы неадресуемы: &m["k"] не компилируется, а m["k"].Field = 1 для структурного значения — тоже; хранят указатели или перезаписывают значение целиком.
Память не возвращается после удаления элементов — большую мапу, которая опустела, пересоздают.