我遇到了一个问题,需要编辑二维切片的多个索引。
将以下数字想象成切片a [][]int
的二维切片
0 1 2 3
1 2 3 4
2 3 4 5
3 4 5 6
问题是我想访问并修改
0 1
1 2
作为子切片,我希望也要更改。我通过以下代码实现了这一点:
sub := a[:2]
for i := range sub {
sub[i] = sub[i][:2]
}
现在fmt.Println(sub)
打印[[0 1] [1 2]]
,但是问题是fmt.Println(a)
正在打印[[0 1] [1 2] [2 3 4 5] [3 4 5 6]]
问题是,如何在不丢失任何数据的情况下访问此子切片?
答案 0 :(得分:3)
如果您的目标是在使用sub
时修改原始[] int切片元素,则将a
的元素复制到新切片中。问题中的代码直接修改a
。
sub := make([][]int, 2)
for i := range sub {
sub[i] = a[i][:2]
}
答案 1 :(得分:0)
只是找到了解决方案,但不知道这样做是否正确
sub := make([][]int, 2)
for i := range sub {
sub[i] = a[i][:2]
}
sub[0][0] = "876"
fmt.Println(a)
fmt.Println(sub)
现在在输出中我有
[[876 1 2 3] [1 2 3 4] [2 3 4 5] [3 4 5 6]]
[[876 1] [1 2]]