如何在Go中声明一个数组(或等效的)

时间:2011-06-22 13:22:38

标签: arrays go slice

我想做(有效)

之类的事情
var myArray [9][3]int

但是当我做的时候

var myArray [someIntVariable][anotherOne]int

它无法使用(我知道为什么,所以我不是在问这个。) 但有没有其他方法可以使这项工作?

抱歉我的英语不好。

3 个答案:

答案 0 :(得分:5)

以下是否适用于您?

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

var myArray := make2dArray(someIntVariable, anotherOne)

答案 1 :(得分:1)

Go中的“array”类型包括长度作为类型的一部分,因此它们仅适用于编译时长度固定的事物(类似于C99之前的C中的“数组”)。如果你想要“数组”,其长度仅在运行时确定(例如Java中的数组),你真正想要的是“切片”。 mepcotterell的回答向您展示了如何创建一片切片。

答案 2 :(得分:0)

您也可以对通用矩阵包感兴趣:

  

gomatrix