Выбор ответа Junior Слайсы и мапы изнутри спрашивают часто обновлено
Порядок обхода map в Go
Вопрос
Какой порядок у for k, v := range m для мапы?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Не определён, рантайм его перемешивает. Спецификация не гарантирует порядок, а рантайм ещё и выбирает случайную стартовую позицию, чтобы на порядок никто не полагался.
Варианты ответа
- Порядок вставки ключей, как в Python dict
- Ключи отсортированы по возрастанию
- Порядок хешей, одинаковый при каждом запуске
- Не определён, рантайм его перемешиваетправильный ответ
Разбор
Спецификация не гарантирует порядок, а рантайм ещё и выбирает случайную стартовую позицию, чтобы на порядок никто не полагался. Порядка вставки, как в Python dict, нет. Сортировки нет. Нужен порядок: собрать ключи и отсортировать, например slices.Sorted(maps.Keys(m)) в Go 1.23+.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Ещё по теме «Слайсы и мапы изнутри»
- Разбить слайс на части по k на Go
- Удаление дубликатов с сохранением порядка на Go
- Группировка анаграмм на Go
- Циклический сдвиг слайса на Go
- Число подмассивов с суммой k на Go
- Топ-k частых слов на Go
- Что выведет Go: append при полной ёмкости
- Что выведет Go: два append в один подслайс