你必须了解 Go Slices 的 header。那么,你自己就能得到答案。通过检查reflect.SliceHeader类型来查看切片标头中的内容:type SliceHeader struct { Data uintptr Len int Cap int}实际上,切片值是一个header,包含支持数组以及长度和容量。它包含一个指向实际存储元素的数组的指针。切片值不包含元素(与数组不同)。因此,当传递或返回切片时,将从该标头传递或返回一个副本以及指针。该指针指向同一个支持的数组。因此,如果您修改切片的元素,它也会修改支持的数组,因此所有切片(共享相同的支持数组)也会得到更改。因此,当您将切片传递给函数时,将从该标头创建一个副本,包括指针,该指针将指向相同的后备数组。修改切片的元素意味着修改后备数组的元素,因此共享相同后备数组的所有切片都将“观察”更改。