Структуры данных. Массивы в Go. Часть 1
внутренние компоненты и основы массива. Блог группы Marpa3d
Странно писать программы, которым не нужно считывать и хранить данные, не так ли?
Например, если вы выходите в Интернет, используете файлы или базу данных - вам нужен способ обработки входящих и исходящих данных.
Для этого в Go встроены три различные структуры данных:
Как только Вы узнаете, как они работают, программирование в Go станет быстрым и интересным!)
Начнем с массивов, поскольку они образуют базовую структуру данных как для срезов, так и для карт.
Внутреннее устройство
Массив в Go - это непрерывный блок памяти фиксированной длины, состоящий из элементов одного типа. Размер массива является частью его типа!
На рисунке вы можете увидеть представление массива. Элементы массива отмечены серым прямоугольником и последовательно соединены друг с другом. Каждый элемент имеет один и тот же тип, в данном случае целое число, и к нему можно получить доступ через уникальную позицию индекса.
Массивы являются ценными структурами данных, поскольку память выделяется последовательно. Наличие памяти в непрерывной форме может помочь сохранить используемую вами память более эффективно. Используя индексную арифметику, вы можете быстро перебирать все элементы массива. Информация о типе для массива указывает расстояние в памяти, которое вам нужно переместить, чтобы найти каждый элемент. Поскольку все элементы имеют один и тот же тип и последовательно следуют друг за другом, перемещение по массиву последовательное и быстрое.
Объявление и инициализация
Массив объявляется путем указания типа данных, которые должны быть сохранены, и общего количества необходимых элементов, также известного как длина (len()) массива. После объявления массива нельзя изменить ни тип сохраняемых данных, ни его длину. Если вам нужно больше элементов, вам нужно создать новый массив необходимой длины, а затем скопировать значения из одного массива в другой!
var array [5]int (здесь элементы массива инициализируются нулевыми значениями для типа int, т.е. нулями)
Но самый быстрый и простой способ создания и инициализации массивов — использование литерала массива. Литералы массива позволяют объявить необходимое количество элементов и указать значения для этих элементов.
array := [5]int {1, 2, 3, 4, 5} - (литерал массива)
Если длина задана как многоточие, Go определит длину массива на основе количества инициализированных элементов.
array := [...]float64 {1.9, 2.8, 4.8, 1.4}
Если вы знаете длину массива, но готовы инициализировать только определенные элементы, вы можете использовать этот синтаксис:
В следующей статье мы поговорим о практической работе с массивами.
Продолжение следует!..
Подробнее о нас на 3d.marpa.su