Открыть Электронные книги
Категории
Открыть Аудиокниги
Категории
Открыть Журналы
Категории
Открыть Документы
Категории
Массивы и слайсы
2020
2
Информация
Данная публикация стала возможной благодаря помощи американского народа,
Но что если таких сущностей (будем называть их объектами) станет 10 или 100?
Уже будет достаточно проблемно с этим справиться. Давайте смотреть, что Go
предлагает нам для этого.
МАССИВЫ
6
Массивы
Например, у нас есть история операций по карте (см. скриншот). Понятно, что мы
не будем заводить несколько сотен переменных под это.
7
Массивы
Вместо этого мы как в жизни, хотели бы сказать "Операции" и хранить там все
2. Одного типа - это значит, что к элементам "операций" нельзя положить что-то
структуры):
10
Массивы
Общая структура:
элементы
инициализируются в
неправильный индекс:
с ошибкой).
привело к её появлению.
14
Инициализация
Мы можем сразу инициализировать массив значениями при объявлении:
15
Инициализация
И есть вариант "для ленивых", когда мы просим компилятор сосчитать, сколько же
Пока выгода только в том, что мы все элементы сохранили под одним именем, но
разными индексами.
самая первая):
следующим образом:
пределами for (т.е. доступна только в строке самого for + в теле цикла)
21
Циклы
Сначала это может показаться сложным, но давайте смотреть на примере:
Что произошло?
1. Мы создали переменную i := 0
программа.
27
Циклы
Если переводить циклы в обычный последовательный код, то он будет выглядеть
константу, но и переменную:
29
Циклы
А это значит, что мы можем прямо в цикле перебирать все значения массива:
30
Циклы
Это операция настолько частая (перебор массива с выбором элемента по
индексу), что в Go для этой цели придумали специальную конструкцию for range:
31
Циклы
Выражение справа возвращает два значения: индекс и сам элемент. Если индекс
Обратите внимание: for range сам остановится, когда переберёт все элементы в
массиве.
32
Циклы
Здесь нужно отметить, что range - это не функция, а конструкция языка, поэтому
слева от неё можно писать как два имени (index, operation или _, operation, если
index нам не нужен), так и одно - index (т.е. в этом случае вам будет передаваться
1. Добавление элемента
2. Удаление элемента
этом месяце (пусть у нас хранятся операции только за месяц). Для этого
если есть две операции с одинаковой суммой, мы берём первую или последнюю?
искать последний.
38
Максимум
Операция эта тоже шаблонная: мы берём первый элемент и сравниваем все
остальные с ним. Как только один из этих "остальных" становится больше или
равен того, что у нас сейчас есть - мы выкидываем тот, который у нас есть и берём
Обязательно пройдитесь
как он работает.
39
Ключевые операции
Но если это настолько частые и
делать?
будет работать!
40
Ключевые операции
Проблемы у нашего решения ровно две:
И если с первым мы ещё можем что-то поделать, то вот со вторым - уже ничего
поделать не можем, наших знаний пока не хватает. А значит, нам нужно искать
очень "лёгкие".
ИТОГИ
52
Итоги
В этой лекции мы обсудили тип, который вы будете использовать чаще всего в Go -
это слайсы. Мы обсудили самые верхнеуровневые моменты, которые позволят
вам уже сейчас их использовать, не вдаваясь в детали внутренней реализации
(которые мы, конечно же, ещё будем рассматривать).
ДОМАШНЕЕ ЗАДАНИЕ
54
Орг.моменты
Курс состоит из 33 обязательных занятий. Мы будем проводить онлайн-вебинары
каждую среду и пятницу в 18:30 (по Душанбе). По итогу онлайн-вебинара мы
выкладываем PDF-материал.
Если не успеете сдать в срок домашнее задания, тогда этот курс будет для вас закончен
и вы сможете зарегистрироваться на запуск следующего через несколько месяцев.
Эту задачу вам поставил более старший программист, вся постановка задачи
заключается в следующем:
alif academy
2020