Открытые уроки

Массивы и срезы под капотом Go

В этом уроке:
  • где и как аллоцируются массивы;
  • как проаллоцировать срез без инициализации;
  • как избежать утечек памяти при работе со срезами;
  • тонкости и нюансы при работе с массивами и срезами.

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

Автор видео — Владимир Балун, Ex-Team Lead в Яндекс, ex-ведущий разработчик в Ozon, ex-разработчик в Mail.ru, Kaspersky Lab, Тинькофф, преподаватель в Balun.Courses.

В начале видео автор объясняет про концепцию массивов, объясняя их устройство и способы работы с ними. Он рассматривает различные аспекты, включая перемещение массива в стеке, итерацию по массивам и особенности аллокации памяти. Также обсуждается передача массивов в функции и связанные с этим нюансы.​

Далее внимание уделяется слайсам — более гибкой структуре данных в Go. Рассматриваются темы реаллокации слайсов, резервирования памяти, создания слайсов без инициализации и модификации строк. Особое внимание уделяется приведению слайсов в строки и обратно без копирования, что позволяет оптимизировать производительность.​

Автор также обсуждает передачу слайсов в функции, итерацию по слайсам и оптимизацию этих процессов. Рассматриваются методы получения слайсов из массивов и конвертации слайсов в массивы и указатели на массивы. Обсуждаются способы удаления элементов из начала и конца слайса, реализация стека и очереди, а также увеличение и уменьшение размера слайса.​

Важной частью видео является обсуждение аллокации слайсов в памяти, очистки слайсов и различий между пустыми и нулевыми слайсами. Автор объясняет, как сравнивать слайсы, копировать их данные и почему функция append возвращает слайс. Также рассматриваются потенциальные проблемы с функцией append и её реализация.
Глубокий Go Go-собеседования