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