go中mak函数创建切片


s := make([]int, 0, 2)
a := [...]int{1, 2}
s = a[:]
a[1] = 100
fmt.Println("修改后")

第一条语句:用make函数创建一个切片,make函数不是一个分配内存的函数吗,就是意味着此时 s 指向这块内存?然后接下来创建一个数组,然后执行第三条语句,数组赋值给切片,那现在是变量s又指向a数组这块内存?所以后面对a的修改会影响到s,不知道理解是否有问题,感觉好奇怪,特别是s先指向make创建的内存,然后又指向数组a内存?理解是否有问题?

make 函数 返回的 就是 新建出来的 切片的 本身的值
s = a[:] // 这是相当于 s 指向了 a数组中取出来的切片数据,这部分数据是包含在数组中的,所以对a的修改,实际上 s相同索引引用的数据也调整了
比如 打印 s[1] = 100