【发布时间】:2021-09-21 00:07:58
【问题描述】:
我想从一个数组创建多个切片。一个切片,每个切片缺少一个元素。我正在使用此代码(playground):
nums := []int{1,2,3}
for i := 0; i < len(nums); i++ {
fmt.Println(append(nums[:i], nums[i+1:]...))
}
我期待收到
[2 3]
[1 3]
[1 2]
但是我收到了
[2 3]
[2 3]
[2 3]
为什么会这样?
【问题讨论】:
-
所以,我想我总是附加到
nums。但是我该如何防止呢? -
append(nums[:i], nums[i+1:]...)修改切片的底层数组 inside 的值(如果它们适合),因此第一次迭代将nums底层数组更改为[2 3 3],依此类推开。 -
我想这会对你有所帮助stackoverflow.com/questions/35920534/…