在某些情况下,当我== len(SliceA)时,我会出现超出范围的错误。
//filterIntersection removes points from two slices that have common points.
func filterIntersection(sliceA, sliceB *[]ds.Coord) {
for i, a := range *sliceA {
for j, b := range *sliceB {
if a == b {
(*sliceA) = append((*sliceA)[:i], (*sliceA)[i+1:]...) <--- error here
(*sliceB) = append((*sliceB)[:j], (*sliceB)[j+1:]...)
}
}
}
}
答案 0 :(得分:1)
如果i == len(SliceA)
,则sliceA[i+1]
越界越好!不是“在某些情况下”,而是在每种情况下,SliceB也会发生同样的情况。
如果是i == len(SliceA)
或j == len(SliceB)
,请考虑退出循环。
另一种解决方案是使用“常规”循环:for i := 0; i < len(SliceA); i++