Ответ
Механизм эвакуации (evacuation) в Go — это процесс перераспределения элементов хэш-таблицы (map) при её росте или сжатии. Когда map достигает определённого порога заполнения (load factor), Go создаёт новую хэш-таблицу большего размера и постепенно переносит (эвакуирует) элементы из старой в новую.
Особенности:
- Эвакуация происходит постепенно (incremental) — при каждом обращении к map переносится несколько элементов.
- Во время эвакуации map может находиться в "переходном" состоянии, когда часть данных в старой таблице, часть — в новой.
- Это позволяет избежать резких скачков производительности при изменении размера map.
Пример:
m := make(map[int]string, 10)
for i := 0; i < 1000; i++ {
m[i] = fmt.Sprintf("value%d", i) // при переполнении начнётся эвакуация
}