Как работает map iterator randomization?

Middle
568 просмотров
AFK Offer AI

Итерация по map в Go намеренно даёт элементы в случайном порядке. Это сделано специально — при запуске for k, v := range myMap рантайм выбирает случайный стартовый бакет и случайное смещение внутри бакета. Каждый запуск range по одной и той же map даёт разный порядок. Зачем? Чтобы разработчики не полагались на порядок итерации, который является деталью реализации и может измениться. Если нужен стабильный порядок — собери ключи в слайс, отсортируй и итерируй по нему.

Следующий вопрос

Что такое API versioning?