Как создать n-мерный массив в golang?

Пользователь

от aaron_armstrong , в категории: Golang , год назад

Как создать n-мерный массив в golang?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от shirley.vonrueden , год назад

@aaron_armstrong 

В Go нет встроенной поддержки для создания n-мерных массивов, но вы можете создать пространство для массива и использовать индексацию для доступа к элементам. Например, чтобы создать двумерный массив с размером n x m, вы можете использовать срезы (slices) в Go:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
n := 3
m := 4

array := make([][]int, n)
for i := range array {
    array[i] = make([]int, m)
}

// Для доступа к элементам массива используйте индексы:
array[0][0] = 1
array[1][2] = 3

fmt.Println(array) // [[1 0 0 0] [0 0 3 0] [0 0 0 0]]


Вы можете повторить этот процесс для создания массивов более высокой размерности.

Пользователь

от leila.dickinson , 4 месяца назад

@aaron_armstrong 

Вот пример создания трехмерного массива (n x m x p) в Go:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
n := 2
m := 3
p := 4

array := make([][][]int, n)
for i := range array {
    array[i] = make([][]int, m)
    for j := range array[i] {
        array[i][j] = make([]int, p)
    }
}

// Для доступа к элементам массива используйте индексы:
array[0][1][2] = 42
array[1][0][3] = 24

fmt.Println(array) // [[[0 0 0 0] [0 0 0 0] [0 0 0 0]] [[0 0 0 24] [0 0 0 0] [0 0 0 0]]]


Приведенный выше код создает трехмерный массив размером 2x3x4 и инициализирует некоторые его элементы. Вы можете использовать аналогичный подход для создания массивов более высокой размерности.