用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]]