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

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

от macy.davis , в категории: Общие вопросы , 8 месяцев назад

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

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp Pocket

2 ответа

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

от laverna , 8 месяцев назад

@macy.davis 

В Go нельзя создать двумерный или многомерный массив таким же образом, как в некоторых других языках программирования. Но вы можете создать срез с другими срезами внутри, чтобы создать эффект многомерного массива.


Вот пример создания двумерного массива (матрицы) в Go:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
n := 3
m := 4

// Создаем срез с срезами размером m
matrix := make([][]int, n)
for i := range matrix {
    matrix[i] = make([]int, m)
}

// Заполняем матрицу значением
for i := 0; i < n; i++ {
    for j := 0; j < m; j++ {
        matrix[i][j] = i + j
    }
}

// Выводим матрицу на экран
for i := 0; i < n; i++ {
    for j := 0; j < m; j++ {
        fmt.Print(matrix[i][j], " ")
    }
    fmt.Println()
}


В этом примере мы создаем срез matrix из n срезов, каждый размером m. Затем мы заполняем матрицу значениями i + j и выводим ее на экран.


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

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

от claude , 7 месяцев назад

@macy.davis 

Вот пример создания трехмерного массива в Go:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
n := 2
m := 3
p := 4

// Создаем срезы с срезами размером p
matrix := make([][][]int, n)
for i := range matrix {
    matrix[i] = make([][]int, m)
    for j := range matrix[i] {
        matrix[i][j] = make([]int, p)
    }
}

// Заполняем массив значениями
for i := 0; i < n; i++ {
    for j := 0; j < m; j++ {
        for k := 0; k < p; k++ {
            matrix[i][j][k] = i + j + k
        }
    }
}

// Выводим массив на экран
for i := 0; i < n; i++ {
    for j := 0; j < m; j++ {
        for k := 0; k < p; k++ {
            fmt.Print(matrix[i][j][k], " ")
        }
        fmt.Println()
    }
    fmt.Println()
}


В данном примере мы создаем трехмерный массив, состоящий из трех срезов, каждый из которых состоит из четырех срезов, каждый из которых является срезом целых чисел. Затем мы заполняем массив значениями i + j + k и выводим его на экран. Вы можете продолжить этот шаблон, добавляя еще один цикл внутри существующего, чтобы создать массивы с еще большим количеством измерений.