go版本go version go1.20.6 windows/amd64
上代码
func main() {
list := []int{2, 4, 8, 2}
list1 := list[0:3]
list1[0] = 10
list1 = append(list1, 12)
fmt.Println(list1, list)//打印 [10 4 8 12] [10 4 8 12]
list1 = append(list1, 5)
fmt.Println(list1, list) //打印 [10 4 8 12 5] [10 4 8 12]
}
这些还比较好理解 两个切片共用底层数组,append 超过cap长度后
接着看下面
func main() {
list := []int{2, 4, 8, 2}
list1 := list[0:3]
list1[0] = 10
fixList(list1)
fmt.Println(list1, list) //打印 [10 4 8] [10 4 8 3]
}
func fixList(param []int) {
param = append(param, 3)
}
有疑问加站长微信联系(非本文作者)

自己好好想想吧 底层结构就是一个数组
开发中 需要新切片和原切片或原数组关联的情况应该是极少的,这种特性 节省的内存空间应该也是有限的,很多时候容易造成不可预知的BUG。