Найти в Дзене
Golang с 0

Go (Golang) с нуля. Урок 7 - Массивы

Оглавление

Массив — структура данных для хранения ряда значений. Разберемся, как они помогают при создании программ.

Уроки по Go | Golang с 0 | Дзен

В предыдущем уроке мы рассмотрели условные операторы. Они помогают проверять различные условия в программе и выполнять действия, если условие истинно или ложно.

Сегодня разберем массивы. Они не так часто используются в реальных программах. Но на них базируются срезы, поэтому знание массива необходимо, чтобы понять срезы.

Срезы мы подробно разберем в следующем уроке.

Основным отличием от среза является то, что в массив нельзя добавлять новые значения.

Но, несмотря на это, массивы тоже можно применять в определенных ситуациях.

Массивы помогают создавать множество объектов одного типа.

Важные факты

  1. Массивы имеют фиксированную длину
  2. В массив нельзя добавлять новые элементы
  3. Массивы можно сравнивать между собой

Массив

По традиции начнем с небольшой аналогии.

Улица и дома на ней.

У каждого дома есть номер. В идеальном мире дома располагаются в порядке увеличения номеров.

Массив похож на улицу с домами.

Рассмотрим пример кода:

-2
The Go Play Space

В данной программе мы определили массив длиной 5 элементов и сразу заполнили его начальными значениями - 1, 2, 3, 4, 5.

Хорошо! Но что еще можно делать с массивом?

Поиск элемента

Массив был бы бесполезен, если бы не имел каких либо операций.

Основной операцией с массивом является поиск элемента по его индексу.

Поиск четвертого по счету дома
Поиск четвертого по счету дома

В жизни мы начинаем счет с единицы. Например, нумерация домов всегда идет с первого дома.

В программировании счет начинается с нуля. К этому нужно привыкнуть.

В приведенном выше коде видим, что будет выведен номер дома - 4, а не 3, как может показаться.

Первый по счету элемент массива имеет индекс 0

Запомните один интересный факт

Поиск элемента по индексу происходит за постоянное время. Оно не зависит от длины массива.

Не важно, сколько у нас храниться элементов в массиве - 1 миллион или 1 миллиард. Время поиска элемента в массиве по индексу не зависит от размера массива.

Представьте, что у каждого дома есть дополнительная информация, кроме его номера. Например, количество жильцов.

Зная факт о постоянстве времени поиска по индексу, можно быстро найти дом с помощью индексации и получить желаемую информацию. Как хранить в элементе дополнительные данные, мы рассмотрим при изучении структур.

Массив обладает еще одной доступной операцией.

Запись элемента

Можно заменить элемент массива с помощью операции присваивания:

street[0] = 100

Если мы вдруг захотели начать нумерацию домов с дома номер 100, то таким способом мы можем это проделать.

Массив можно определить другим способом и заполнить его элементы с помощью операции присвоения. Посмотрим на примере программы:

Альтернативный способ создания массива
Альтернативный способ создания массива

Получилась улица из трех домов. Видим, что такой способ несколько длиннее первоначального. Так что рекомендую использовать первый способ инициализации.

Обход массива

Вопрос

Как вывести все номера домов на улице?

Для этого можно и нужно использовать циклы.

Конструкция цикла позволяет перебрать все элементы массива друг за другом и проделать с ними какую-либо работу. Например, вывести их на экран.

Рассмотрим программу, в которой делается то, что нам нужно:

Перебираем каждый элемент массива с помощью конструкции for range
Перебираем каждый элемент массива с помощью конструкции for range

Сравнение массивов

Массивы можно сравнивать между собой, также как простые типы данных, такие как числа или строки.

Но чтобы сравнить два массива они должны обладать одинаковой длиной!

Код выдает ошибку компиляции если длина массивов не одинакова
Код выдает ошибку компиляции если длина массивов не одинакова

Практика

Переходи по ссылке и пройди практику по данному уроку в обучающей онлайн — платформе Stepik.

Массивы

Самостоятельная работа

Напишите программу, в которой создается массив из пяти чисел. Выведите квадраты этих чисел на экран.

В следующем уроке рассмотрим срезы. Более удобный способ хранить ряд однотипных объектов.

До скорых встреч!