Обзор

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

  • В структурах ваши значения могут иметь разные типы, а в массивах они должны быть одного типа.
  • В структурах каждое значение имеет собственное имя, к которому вы можете получить доступ к этому конкретному значению с этим конкретным именем позже, в то время как в массивах значения имеют только порядковые номера и не имеют имен.
  • В массивах порядок хранимых значений всегда постоянный. Это означает, что если вы попытаетесь перебрать массив с помощью цикла 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. Давайте вместе посмотрим милую гифку суслика:

Мы поговорим о ссылочных типах в следующих нескольких частях.

Следующий:



Предыдущий:



Индекс списка: