Загрузка страницы

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

В этом видео мы в деталях разберемся, как устроен тип Map в Go и сможем ответить на некоторые очень интересные вопросы:
- зачем заранее аллоцировать память под мапы?
- почему порядок их обхода случайный?
- почему нельзя взять ссылку на элемент мапы?
- и др.
----

❤️ Если у вас есть желание поддержать развитие канала:
https://www.patreon.com/tuzov
https://boosty.to/nikolay.tuzov

- 👾 Мой канал в Telegram: https://t.me/ntuzov
- 🗣 Чат в Telegram: https://t.me/+zsSZ63wEJDs3NGVi
- 👀 Golang Digest: https://t.me/golang_digest - мои регулярные подборки интересных материалов по Go.
----

Видео про Хэш-таблицы: https://youtu.be/0UX4MIfOMEs

Видео про дженерики: https://youtu.be/PXsojiyWOXA

Видео про Slice: https://youtu.be/10LW7NROfOQ
----

Исходный код Map в официальном репозитории Go: https://github.com/golang/go/blob/master/src/runtime/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 Вывод функции fmt.Println() - почему он фиксированный?
33:14 Подводим итоги
33:45 Заключение

#golang #go #tuzov

Видео Как на самом деле устроен тип Map в Golang? | Под капотом Golang канала Николай Тузов — Golang Lessons
Показать
Комментарии отсутствуют
Введите заголовок:

Введите адрес ссылки:

Введите адрес видео с YouTube:

Зарегистрируйтесь или войдите с
Информация о видео
21 июня 2022 г. 16:57:03
00:34:33
Другие видео канала
Хэш-таблицы за 10 минутХэш-таблицы за 10 минутGolang | Slice в деталях, простым языкомGolang | Slice в деталях, простым языкомБыть Golang-разработчиком: почему PHP-шники переходят на Go и в чём перспективность языкаБыть Golang-разработчиком: почему PHP-шники переходят на Go и в чём перспективность языкаПотребление оперативной памяти в языке Go: проблемы и пути решенияПотребление оперативной памяти в языке Go: проблемы и пути решенияGoLang Unit Testing and Mock Testing TutorialGoLang Unit Testing and Mock Testing TutorialЯзык программирования Golang - что на нем пишут, чем он хорош, зарплаты разработчиковЯзык программирования Golang - что на нем пишут, чем он хорош, зарплаты разработчиковАнтон Сергеев, «Go под капотом»Антон Сергеев, «Go под капотом»NeoVim как IDE для Golang и не толькоNeoVim как IDE для Golang и не толькоСамое полное интервью Golang MiddleСамое полное интервью Golang MiddleОткрытое собеседование на Go-разработчика | Тренировочные интервьюОткрытое собеседование на Go-разработчика | Тренировочные интервьюРазбираемся с контекстами в #Go / туториал по context.Context в #GolangРазбираемся с контекстами в #Go / туториал по context.Context в #GolangВсе про Golang 👨‍💻 Перспективы, зарплаты, где применяется, как учитьВсе про Golang 👨‍💻 Перспективы, зарплаты, где применяется, как учитьПробуем дженерики Go на практикеПробуем дженерики Go на практикеГорутины, каналы, пакет "sync". Конкурентность в Go.Горутины, каналы, пакет "sync". Конкурентность в Go.Context в GolangContext в GolangЗачем нужны интерфейсы в #Go? / туториал по интерфейсам в #GolangЗачем нужны интерфейсы в #Go? / туториал по интерфейсам в #GolangСоздай свой тип данных. Go #19. Введение в структуры в Golang. Уроки Go. Курс GoСоздай свой тип данных. Go #19. Введение в структуры в Golang. Уроки Go. Курс GoБезопасность в Golang | НавыкиБезопасность в Golang | НавыкиКак устроена сборка мусора в Golang, Дмитрий КривенкоКак устроена сборка мусора в Golang, Дмитрий КривенкоАрхитектура Golang приложений 🚀Разбор реального проектаАрхитектура Golang приложений 🚀Разбор реального проекта
Яндекс.Метрика