cpp

Многомерные массивы

Массивы в языке Go могут быть многомерными. Объявление многомерного массива имеет следующий формат:

var <Переменная> [<Число элементов 1>][<Число элементов 2>]...
                 [<Число элементов N>]<Тип>

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

var <Переменная> [<Количество строк>][<Количество столбцов>]<Тип>

Пример объявления двумерного массива, содержащего две строки и четыре столбца:

var arr [2][4]int      // Две строки из 4-х элементов каждая
fmt.Println(arr)       // [[0 0 0 0] [0 0 0 0]]

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

arr := [2][4]int{
   {1, 2, 3, 4},
   {5, 6, 7, 8},
}
fmt.Println(arr)       // [[1 2 3 4] [5 6 7 8]]

Получить или задать значение элемента можно указав два индекса (не забывайте, что нумерация начинается с нуля):

arr := [2][4]int{
   {1, 2, 3, 4},
   {5, 6, 7, 8},
}
fmt.Println(arr[0][0])       // 1
fmt.Println(arr[1][0])       // 5
fmt.Println(arr[1][3])       // 8

Чтобы вывести все значения массива необходимо использовать вложенные циклы. В качестве примера пронумеруем все элементы массива, а затем выведем все значения:

var arr [2][4]int
n := 1
// Нумеруем все элементы массива
for i := 0; i < len(arr); i++ {
   for j := 0; j < len(arr[i]); j++ {
      arr[i][j] = n
      n++
   }
}
// Выводим значения
for i := 0; i < len(arr); i++ {
   for j := 0; j < len(arr[i]); j++ {
      fmt.Print(arr[i][j], " ")
   }
   fmt.Println()
}
for _, row := range arr {
   for _, value := range row {
      fmt.Print(value, " ")
   }
   fmt.Println()
}

Результат:

1 2 3 4
5 6 7 8
1 2 3 4
5 6 7 8

Пример объявления указателя на двумерный массив:

arr := [2][4]int{
   {1, 2, 3, 4},
   {5, 6, 7, 8},
}
var p *[2][4]int = &arr
fmt.Println(p[0][0])          // 1
fmt.Println((*p)[0][0])       // 1

Учебник Go (Golang)
Учебник Go (Golang) в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов

cpp