Выбор ответа Junior Слайсы и мапы изнутри спрашивают часто обновлено

Порядок обхода map в Go

Вопрос

Какой порядок у for k, v := range m для мапы?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Не определён, рантайм его перемешивает. Спецификация не гарантирует порядок, а рантайм ещё и выбирает случайную стартовую позицию, чтобы на порядок никто не полагался.

Варианты ответа

  1. Порядок вставки ключей, как в Python dict
  2. Ключи отсортированы по возрастанию
  3. Порядок хешей, одинаковый при каждом запуске
  4. Не определён, рантайм его перемешиваетправильный ответ

Разбор

Спецификация не гарантирует порядок, а рантайм ещё и выбирает случайную стартовую позицию, чтобы на порядок никто не полагался. Порядка вставки, как в Python dict, нет. Сортировки нет. Нужен порядок: собрать ключи и отсортировать, например slices.Sorted(maps.Keys(m)) в Go 1.23+.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.