在Go切片中附加时超出范围

时间:2019-06-23 17:54:40

标签: go slice

在某些情况下,当我== 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:]...)
            }
        }
    }
}

1 个答案:

答案 0 :(得分:1)

如果i == len(SliceA),则sliceA[i+1]越界越好!不是“在某些情况下”,而是在每种情况下,SliceB也会发生同样的情况。

如果是i == len(SliceA)j == len(SliceB),请考虑退出循环。

另一种解决方案是使用“常规”循环:for i := 0; i < len(SliceA); i++