Как создать 2D массив на основе длины, переданной в массив - PullRequest
0 голосов
/ 02 декабря 2018
func matrix(n int) {
  var result [n][n]int //Does not work
  fmt.Println(result)
}

Как создать двумерный массив на основе длины, переданной в массив;n - длина массива.

Ответы [ 2 ]

0 голосов
/ 02 декабря 2018

Спецификация языка программирования Go

Типы массивов

Массив - это пронумерованная последовательность элементов одного типа,называется тип элемента.Количество элементов называется длиной и никогда не бывает отрицательным.

ArrayType   = "[" ArrayLength "]" ElementType .
ArrayLength = Expression .
ElementType = Type .

Длина является частью типа массива;оно должно вычисляться как неотрицательная константа, представимая значением типа int.Длина массива a может быть определена с помощью встроенной функции len.Элементы могут быть адресованы целочисленными индексами от 0 до len (a) -1.Типы массива всегда одномерны, но могут быть составлены для формирования многомерных типов.


Длина является частью типа массива;он должен быть равен неотрицательной константе, представляемой значением типа int.

Размер массива фиксирован во время компиляции.


Использовать фрагментвместо.

Например,

package main

import "fmt"

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

func main() {
    fmt.Println(matrix(3))
}

Детская площадка: https://play.golang.org/p/D1MHmm5KCht

Выход:

[[0 0 0] [0 0 0] [0 0 0]]

0 голосов
/ 02 декабря 2018

Вы должны распределить дальнейшие измерения индивидуально, например, так:

func matrix(n int) {
    var result = make([][]int, n)
    for i := range result {
        result[i] = make([]int, n)
    }
    fmt.Println(result)
}

С фактическим массивом с фиксированными измерениями, известными во время компиляции, вы можете сделать что-то вроде:

var result [5][5]int

но это не тот случай, который у вас есть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...