先看代码
ret:=[][]int{}
fmt.Println(ret) // []
ret=append(ret,[]int{1,2,3})
ret[0]=append(ret[0],4,5,6)
fmt.Println(ret) //[1 2 3 4 5 6]
ret:=[][]int{}
fmt.Println(ret)
ret[0]=append(ret[0],4,5,6) //报错因为这种初始化方式ret[0]不存在
ret=append(ret,[]int{1,2,3})
fmt.Println(ret)
}
ret:=make([][]int, 2)
fmt.Println(ret) //[[] []]
ret[0]=append(ret[0],4,5,6)
ret=append(ret,[]int{1,2,3})
fmt.Println(ret) //[[4 5 6] [] [1 2 3]]
}
这种初始化方式给二维切片先赋了2个空一维数组。所以不会报错