Go 语言二维或多维数组 / 切片定义上的小坑

Go的二维数组是数组的数组,二维切片是切片的切片。

首先二维数组可以这样定义:

dp := [2][2]int{}

但是这个长度必须是写死的常量,如果这样定义就会报错,因为用了变量。

m := 2
n := 2
dp := [m][n]int{}

如果一定要用变量,那就只能用切片。

我们都知道,特定长度的一维切片可以用 make( []Type, size, cap ) 来定义,那二维切片要怎么定义呢?

答案是只能用切片的切片来定义,也就是先定义一个维度的二维切片,再用一个循环定义切片的切片:

leng := 4
a :=make([][]int ,leng)
  for i:=0;i<4;i++{
    a[i]=make([]int,leng)
  }

虽然这个循环可以和双循环取值一起用,但是怎么说都还是没有其他语言定义二维数组那么方便,必须从0开始循环。

更多维度的切片同理。

你可能感兴趣的:(Golang,golang,数据结构,多维数组,Go)