Обзор
Массивы в основном представляют собой различные значения из одного и того же типа, которые имеют одно имя. Вот концептуальные различия между массивами и структурами:
- В структурах ваши значения могут иметь разные типы, а в массивах они должны быть одного типа.
- В структурах каждое значение имеет собственное имя, к которому вы можете получить доступ к этому конкретному значению с этим конкретным именем позже, в то время как в массивах значения имеют только порядковые номера и не имеют имен.
- В массивах порядок хранимых значений всегда постоянный. Это означает, что если вы попытаетесь перебрать массив с помощью цикла for, который вы увидите позже в части о циклах, на каждой итерации порядок значений остается таким же, как и в прошлый раз. С учетом сказанного, вы можете доверять их заказу. Однако это не относится к структурам. Порядок, в котором пары ключ/значение хранятся внутри структуры, нелегко определить (это зависит от того, как компилятор решит, что он более эффективен). влияние на то, как компилятор решит, в каком порядке их хранить.
Зная приведенную выше информацию, вы можете подумать, что массивы — это гораздо более простые агрегатные типы, чем структуры, и это правда. Давайте посмотрим на них в действии.
Как определить и использовать массивы?
Синтаксис очень прост и почти похож на определение простых переменных:
# Either define the type first and assign it to a variable later on type MyArrayTypeName [ARRAY_SIZE]TYPE var MyArrayName MyArrayTypeName MyArrayName[INDEX] = VALUE ... # Or define the type when initializing the variable itself var MyArrayName [ARRAY_SIZE]TYPE ...
В приведенном выше синтаксисе:
ARRAY_SIZE
— это размер вашего массива, который должен быть определен при определении типа вашего массива.TYPE
может быть любым типом, существующим в GO. Даже функции типа!INDEX
— это порядковый номер значения, начиная с0
.
Позвольте мне показать вам код:
Вывод должен быть:
The third value of mySecondArray: 1 myFirstArray: [10 3 89 54 4378] mySecondArray: [23 34 1 832 33] myThirdArray: [Ali Gopher You Let's GO!] myFourthArray: [false true true] myThirdArray after mutation: [KYXEY Gopher You Let's GO!] myFourthArray after mutation: [true false false]
Примечание 1. Массивы можно изменять. Только их размер и тип неизменны.
Примечание 2. Массивы в GO могут быть многомерными. Но, как и первое измерение, другие измерения также должны иметь определенную длину при определении. Также тип элементов других измерений так же точен, как и первое измерение. Например, для определения простого трехмерного массива целых чисел вы можете просто сказать var myArray [SIZE_OF_FIRST_DIM][SIZE_OF_SECOND_DIM][SIZE_OF_THIRD_DIM]int
. Это в основном массив массивов массивов.
Хорошо все сделано! Это все, что касается типов агрегатов в GO. Давайте вместе посмотрим милую гифку суслика:
Мы поговорим о ссылочных типах в следующих нескольких частях.