
本文介绍了在 Go 语言中如何动态创建多维数组,特别是当数组的维度大小需要在运行时才能确定时。通过使用 make 函数和切片,可以灵活地创建和操作动态大小的多维数组,从而满足各种编程需求。
在 Go 语言中,数组的大小在声明时必须是常量。这意味着你不能直接使用变量来指定数组的维度。但是,你可以使用切片(slices)来模拟动态大小的数组。切片是对底层数组的引用,可以动态地调整大小。
使用 make 函数创建二维切片
要创建一个动态大小的二维数组(实际上是一个切片的切片),可以使用 make 函数。以下是一个创建 m x n 的二维 int 切片的示例:
func make2dArray(m, n int) [][]int {
myArray := make([][]int, m)
for i := range myArray {
myArray[i] = make([]int, n)
}
return myArray
}
// 示例用法
func main() {
someIntVariable := 5
anotherOne := 10
myArray := make2dArray(someIntVariable, anotherOne)
// 现在 myArray 是一个 5x10 的二维切片
// 你可以像访问普通数组一样访问它
myArray[0][0] = 1
myArray[4][9] = 100
// 打印验证
println(myArray[0][0]) // 输出: 1
println(myArray[4][9]) // 输出: 100
}代码解释:
make([][]int, m):这行代码创建了一个长度为 m 的切片,其中每个元素都是一个 []int 类型的切片。 换句话说,它创建了第一维,但还没有为第二维分配空间。
for i := range myArray { myArray[i] = make([]int, n) }:这个循环遍历了第一维的每个元素,并使用 make([]int, n) 为每个元素创建了一个长度为 n 的 int 切片。 这样,我们就完成了第二维的初始化。
注意事项:
- make 函数用于创建切片、映射(maps)和通道(channels)。
- 切片是引用类型,因此多个切片可以引用同一个底层数组。修改一个切片可能会影响到其他引用同一个底层数组的切片。
- 切片的长度可以使用 len() 函数获取,容量可以使用 cap() 函数获取。 长度是指切片中元素的个数,容量是指底层数组可以容纳的元素个数。
- 可以使用 append() 函数向切片中添加元素。如果切片的容量不足,append() 函数会自动创建一个新的底层数组,并将原有元素复制到新的数组中。
总结:
使用 make 函数和切片是在 Go 语言中创建动态大小多维数组的常用方法。 这种方法灵活且高效,可以满足各种需要在运行时确定数组大小的场景。 通过理解切片的本质和 make 函数的用法,你可以轻松地在 Go 语言中处理动态数组。









