Будут выведены пары a 1, b 2 и c 3, но порядок строк не определён. range по map не гарантирует порядок вставки или сортировку.
Какой результат печатает программа (пример 81)
Будут выведены пары a 1, b 2 и c 3, но порядок строк не определён. range по map не гарантирует порядок вставки или сортировку.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Определите, какой вывод появится при выполнении следующего кода на Go:
m := map[string]int{"a":1,"b":2,"c":3}
for a, b := range m {
fmt.Println(a, b)
}
Ответ
Будут выведены пары a 1, b 2 и c 3, но порядок строк не определён. range по map не гарантирует порядок вставки или сортировку.
Каждая существующая пара при таком неизменяемом отображении обходится один раз. Возможный вывод — a 1, затем b 2, затем c 3, но полагаться на него нельзя даже между двумя обходами одной map.
Если нужен устойчивый вывод, соберите ключи в срез, отсортируйте его и обращайтесь к значениям по ключам. Пример предполагает выполнение фрагмента внутри функции с подключённым fmt; сам по себе он не является полным Go-файлом.