当切片的容量不足以容纳更多元素时,Go语言会自动分配一个更大的底层数组,并将切片的指针指向新的底层数组。这种自动扩容的机制使得切片在使用时非常灵活和方便。...:= s1 s2 = append(s2, 3) one(s1) one(s2) fmt.Printf("%v,%v", s1, s2)}func main(){ tow()}首先会执行..., 而函数外面的s1的底层数组可是仍然是没有变化的那个,所以后面打印的仍然是1,2然后就是下一个one函数的执行,传入s2,首先为s2追加一个元素,append函数返现此时的底层数组未满(容积4,长度3...),然后就正常把0加到了切片的末尾,此时底层数组容积为4,长度为4,内容为1,2,3,0,然后执行for循环操作,底层数组的值因此就变成了2,3,4,1,注意!...,切片的底层是一个结构体,其中有一个变量是用于存储切片长度的,还有一个指针用来指向数据,two调用one时发生了拷贝,这两个切片不是一个切片,但是指向的数据是同一片数据,虽然指向的数据变成了[2,3,4,1