Computer_Science
April 27, 2023

Структуры данных. Массивы в Go. Часть 1

внутренние компоненты и основы массива. Блог группы Marpa3d

Странно писать программы, которым не нужно считывать и хранить данные, не так ли?

Например, если вы выходите в Интернет, используете файлы или базу данных - вам нужен способ обработки входящих и исходящих данных.

Для этого в Go встроены три различные структуры данных:

  1. массивы
  2. срезы (слайсы)
  3. карты (мапы)

Как только Вы узнаете, как они работают, программирование в Go станет быстрым и интересным!)

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

Внутреннее устройство

Массив в Go - это непрерывный блок памяти фиксированной длины, состоящий из элементов одного типа. Размер массива является частью его типа!

На рисунке вы можете увидеть представление массива. Элементы массива отмечены серым прямоугольником и последовательно соединены друг с другом. Каждый элемент имеет один и тот же тип, в данном случае целое число, и к нему можно получить доступ через уникальную позицию индекса.

массив в памяти. Предоставлено Bill Kennedy и Marpa3D

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

Объявление и инициализация

Массив объявляется путем указания типа данных, которые должны быть сохранены, и общего количества необходимых элементов, также известного как длина (len()) массива. После объявления массива нельзя изменить ни тип сохраняемых данных, ни его длину. Если вам нужно больше элементов, вам нужно создать новый массив необходимой длины, а затем скопировать значения из одного массива в другой!

var array [5]int (здесь элементы массива инициализируются нулевыми значениями для типа int, т.е. нулями)

нулевые значения для типа int при объявлении массива

Но самый быстрый и простой способ создания и инициализации массивов — использование литерала массива. Литералы массива позволяют объявить необходимое количество элементов и указать значения для этих элементов.

array := [5]int {1, 2, 3, 4, 5} - (литерал массива)

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

array := [...]float64 {1.9, 2.8, 4.8, 1.4}

Если вы знаете длину массива, но готовы инициализировать только определенные элементы, вы можете использовать этот синтаксис:

array := [5]int {1:10, 2:20}

литерал массива

В следующей статье мы поговорим о практической работе с массивами.
Продолжение следует!..

Подробнее о нас на 3d.marpa.su