Введение и знакомство 0:00 Вебинар посвящен слайсам и массивам в Go. Призыв к активности в чате и вопросам. Просьба представиться и рассказать о своем опыте и целях участия.
О компании OTUS 1:52 OTUS - платформа онлайн-образования в IT. Специализируется на продвинутых программах для специалистов с опытом. Быстрое создание курсов по новым технологиям. Образовательная лицензия и программы повышения квалификации.
Курсы и аудитория 2:52 Курсы для джуниоров, мидлов, сеньоров и элит. Восемь направлений: программирование, инфраструктура, тестирование, аналитика, дата-сайнс, управление, геймдев и информационная безопасность. Более 130 курсов, 600 преподавателей, 20 тысяч учеников.
Вебинар и его цели 3:52 Вебинар продлится около часа-полутора. Призыв к активному участию и задаванию вопросов. Обсуждение массивов, слайсов и их подводных камней.
Представление спикера 4:52 Представление инженера-разработчика Сергея Семушкина. Призыв к участникам представиться и рассказать о своих целях. Начало вебинара и обсуждение слайсов и массивов в Go.
Введение в массивы 7:45 Массив - это последовательно расположенные элементы в памяти. Размер массива определяется на этапе компиляции и является частью его типа. Массивы в Go используются реже, чем слайсы, но важны для понимания последних.
Объявление и инициализация массивов 8:37 Массив объявляется с ключевым словом var и размерностью в квадратных скобках. Массив заполняется дефолтным значением для типа данных. В Go есть два типа int: 32-битный и 64-битный, что влияет на размер массива.
Многомерные массивы 10:22 В Go можно создавать многомерные массивы, используя запись с двоеточием. Массивы могут быть инициализированы значениями при объявлении. Компилятор может автоматически вычислить размер массива, если не указано двоеточие.
Операции с массивами 12:22 Основные операции: чтение, запись, получение длины массива. Операция получения слайса позволяет конвертировать массив в слайс.
Введение в слайсы 14:07 Слайс - это контейнер для работы с массивами переменной длины. Неинициализированный слайс имеет дефолтное значение nil. Инициализация слайса может быть выполнена с помощью литерала слайса или функции make.
Операции со слайсами 16:22 Функция make позволяет создать слайс с предустановленными параметрами длины и емкости. Слайсы поддерживают операции чтения, записи и получения длины.
АПИ слайса 17:07 АПИ слайса похож на АПИ массивов. Можно читать и писать элементы слайса по индексу. Длина слайса хранится в его структуре. Реслайсинг доступен для слайсов.
Динамическое добавление элементов 18:00 Слайсы позволяют динамически добавлять элементы. Функция append добавляет элементы в конец слайса. Можно добавлять элементы из других слайсов и массивов. Слайсы могут быть неинициализированы и заполнены позже.
Преимущества слайсов 19:52 Слайсы предпочтительнее массивов в большинстве случаев. Массивы используются, когда известно точное количество элементов. Слайсы обычно находятся на стеке, что улучшает производительность.
Внутреннее устройство слайса 21:52 Слайс представляет собой структуру с полями: unsafe pointer, length, capacity. Слайс является оберткой над массивом. Длина слайса регулирует его размерность. Реслайсинг позволяет вырезать часть массива.
unsafe pointer 23:52 unsafe pointer позволяет обойти систему типов. Слайс может быть контейнером для разных типов данных. Функция make позволяет инициализировать слайс с длиной и емкостью.
Пример инициализации слайса 25:52 Пример инициализации слайса с помощью функции make. Длина слайса и емкость подлежащего массива указываются при инициализации. При добавлении элементов длина слайса увеличивается.
Добавление элементов 27:52 При добавлении элементов длина слайса увеличивается. Если места в массиве больше нет, нужно создать новый слайс или массив.
Переадресация данных в слайсах 28:52 При добавлении нового элемента в слайс, который превышает его длину, происходит переадресация данных. Инициализируется новый массив, в который копируются данные из старого массива. Старый массив становится мусором и удаляется сборщиком мусора.
Алгоритм увеличения длины слайса 29:52 При превышении длины слайса, его длина удваивается до тех пор, пока не достигнет 1024. После 1024 длина увеличивается на четверть, чтобы избежать больших выделений памяти. Старые массивы удаляются сборщиком мусора, если на них нет ссылок.
Подслайсы и их особенности 31:52 Подслайсы позволяют создавать новые слайсы, указывающие на часть старого слайса. Новый слайс указывает на часть старого слайса, начиная с указанного индекса. Важно понимать, что все элементы нового слайса будут указывать на один и тот же внутренний массив.
Проблемы с переадресацией данных 34:52 Переадресация данных может привести к проблемам, если бизнес-логика зависит от изменения элементов в разных слайсах. При изменении элементов в одном слайсе, это может повлиять на другой слайс, если они указывают на один и тот же массив. Для предотвращения таких проблем, функции должны возвращать новый слайс, а не изменять текущий.
Глубокая копия слайсов 39:37 Для создания глубокой копии слайса используется функция copy. Глубокая копия позволяет избежать взаимного влияния между слайсами. Это помогает избежать ошибок и гарантирует корректное поведение бизнес-логики.
Введение и вопросы 40:37 Денис извиняется за технические проблемы с микрофоном. Алексей просит дать ему время перевести дух. Денис предлагает задавать вопросы в чате и обещает вернуться к бонусной части.
Курс по Golang 41:37 Денис рассказывает о курсе по Golang от OTSUS. Курс включает практические задачи от ведущих компаний. Выпускной проект - самостоятельная разработка микросервиса.
Процесс обучения 42:37 Обучение проходит в формате вебинаров. Записи занятий и материалы доступны в личном кабинете. Домашние задания с фидбеком от преподавателей.
Время и результаты курса 43:37 Курс занимает от четырех до восьми часов в неделю. Программа обновляется в зависимости от актуальных запросов. Выпускники смогут писать продакшн-код, понимать Golang и создавать микросервисы.
Карьерные перспективы 44:37 Анализ вакансий для Golang разработчиков. Зарплаты варьируются от 150 до 450 тысяч рублей. Примеры вакансий и требований к соискателям.
Вопросы и ответы 46:37 Руслан задает вопрос о дебаггерах. Алексей объясняет, что devel - де-факто стандарт для Golang. Делф работает хорошо с экстеншн-кодом и конкурентными программами.
Заключение и бонусы 48:37 Денис благодарит Алексея за вебинар. Алексей предлагает подписаться на социальные сети OTSUS. Денис анонсирует специальное предложение на курс OTSUS со скидкой.