Как на самом деле устроен тип Map в Golang? | Golang под капотом

В этом видео мы в деталях разберемся, как устроен тип Map в Go и сможем ответить на некоторые очень интересные вопросы: - зачем заранее аллоцировать память под мапы? - почему порядок их обхода случайный? - почему нельзя взять ссылку на элемент мапы? - и др. ---- ❤️ Если у вас есть желание поддержать развитие канала: - 👾 Мой канал в Telegram: - 🗣 Чат в Telegram: zsSZ63wEJDs3NGVi - 👀 Golang Digest: - мои регулярные подборки интересных материалов по Go. ---- Видео про Хэш-таблицы: Видео про дженерики: Видео про Slice: ---- Исходный код Map в официальном репозитории Go: Тайм-коды 00:00 Вступление 00:24 Что такое Map? 00:55 Простая реализация - перебор 01:56 Как сделать лучше - разбиваем на бакеты 03:21 Хэш-функция - равномерное распределение по бакетам 05:08 Как реализовать Map без дженериков? 08:20 v = m[k]: во что на самом деле это скомпилируется? 09:25 Все преобразования операций с Map 10:27 Внутренняя структура Map 11:33 Low order bits (LOB) - выбор бакета 13:39 Структура бакета 15:31 Исходный код заголовка Map (hmap) 16:05 Исходный код поиска значения в Map (mapaccess1) 23:30 Переполнение бакета 24:47 Рост Map при заполнении 27:05 Эвакуация данных 28:02 Как избежать эвакуацию данных и ускорить программу - аллокация памяти 28:39 Почему нельзя взять указатель на элемент Map 29:26 Или можно..? 30:12 Порядох обхода мапы - почему он случайный? 31:47 Вывод функции () - почему он фиксированный? 33:14 Подводим итоги 33:45 Заключение #golang #go #tuzov
Back to Top