go slice研究

132 阅读1分钟

创建整型二维切片 slice1

image.png

截取切片,slice2

slice2 与 slice1 指向了相同的底层数组

image.png

修改slice2的值,会修改底层数组的值

slice1 := [][]int{{10}, {20, 30}}
slice2 := slice1[0]
slice2[0] = 100

image.png

image.png

增加slice2的长度和容量,会给slice2创建一个新底层数组,slice1底层数组不变

slice1 := [][]int{{10}, {20, 30}}
slice2 := slice1[0]
slice2 = append(slice2,200)

image.png

image.png

image.png

切片传入函数中,其实只传了切片的地址,长度和容量,没有复制底层数组,所以也有上述切片操作相同的效果