Go 为什么不';不去重新分配基础阵列吗?

Go 为什么不';不去重新分配基础阵列吗?,go,slice,Go,Slice,切片包含三个组件:长度、容量和指向底层数组的指针 当我们尝试将追加到已满的片(len==cap)时,将分配一个更大的数组 我在一本书中读到,我们必须将append的返回值赋回到切片,因为由于底层数组的重新分配,可能会返回不同的切片 runes=append(runes,r) 但我不知道为什么这是必要的。难道我们不能重新分配一个新数组并更新原始切片实例的指针吗?所有函数参数都在Go中按值传递。函数无法更改调用方的值 切片(长度、容量、指针)按值传递给append函数。由于append无法更改调用方

切片包含三个组件:长度、容量和指向底层数组的指针

当我们尝试将追加到已满的片(
len==cap
)时,将分配一个更大的数组

我在一本书中读到,我们必须将
append
的返回值赋回到切片,因为由于底层数组的重新分配,可能会返回不同的切片

runes=append(runes,r)


但我不知道为什么这是必要的。难道我们不能重新分配一个新数组并更新原始切片实例的指针吗?

所有函数参数都在Go中按值传递。函数无法更改调用方的值

切片(长度、容量、指针)按值传递给append函数。由于append无法更改调用方的切片,因此append函数返回新切片


append函数可以编写为获取指向切片的指针,但这会使append在切片值不可寻址的许多情况下难以使用。

我认为最好解释一下append为什么不获取指向切片的指针。可能使用类似于
append(foo(),x)
的示例?