<
go二维切片
>
上一篇

分布式gfs
下一篇

qwq

二维切片初始化

用make初始化,不能类似于Java那样直接new int[m][n],得分配外层之后,手动分配内层。

这是由于make初始化之后,内部的slice是没有分配内存,此时直接用会报错:“panic: runtime error: index out of range [0] with length 0”

比如可以:

dp := make([][]int, m)
for i, _ := range dp {
    dp[i] = make([]int, n)
}

实际上就相当于Java的:

int dp[][] = new int[m][n];

另外:

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

用append:

a := make([][]int, 0)
//想添加了直接append
a = append(a, []int{})	//内slice初始len=0, cap=0

情况允许的话,也完全可以随用随加

a := make([][]int, 0)
b := make([]int, 0)
b = append(b, 3)
a = append(a, b)
a = append(a, []int{6,7})
fmt.Println(a) //[[3] [6,7]]
Top
Foot