【发布时间】:2011-09-20 09:36:31
【问题描述】:
我想做一些类似的事情(它是有效的)
var myArray [9][3]int
但是当我这样做时
var myArray [someIntVariable][anotherOne]int
它不能用(我知道为什么,所以我不问这个。) 但是有没有其他方法可以完成这项工作?
对不起,我的英语不好。
【问题讨论】:
我想做一些类似的事情(它是有效的)
var myArray [9][3]int
但是当我这样做时
var myArray [someIntVariable][anotherOne]int
它不能用(我知道为什么,所以我不问这个。) 但是有没有其他方法可以完成这项工作?
对不起,我的英语不好。
【问题讨论】:
以下内容对您有用吗?
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)
【讨论】:
Go 中的“array”类型包含长度作为类型的一部分,因此它们仅适用于在编译时长度固定的情况(类似于 C99 之前的 C 中的“arrays”)。如果您想要长度仅在运行时确定的“数组”(例如 Java 中的数组),那么您真正想要的是“切片”。 mepcotterell 的回答向您展示了如何创建切片。
【讨论】:
您也可以对通用矩阵包感兴趣:
【讨论】: