go - 在 Go 切片中追加时超出范围
问题描述
在某些情况下,当 i == 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:]...)
}
}
}
}
解决方案
那么如果i == len(SliceA)
,则sliceA[i+1]
超出范围!这不是“在某些情况下”,而是在每种情况下,同样的情况也会发生在 SliceB 上。
考虑打破你的循环 ifi == len(SliceA)
或j == len(SliceB)
.
另一种解决方案是使用“常规” for 循环:for i := 0; i < len(SliceA); i++
推荐阅读
- kubernetes - 跨数据中心创建 Pod
- angular - 赛普拉斯安装失败,代理设置
- sql - 过去 30 天内收到的文件数按每天拆分
- c++ - 尝试通过 OCI 例程从 Oracle 获取 blob 数据,但出现错误:ORA-01008: not all variables bound
- r - 用其中的正则表达式动态替换 R 中的字符串
- azure - Azure Web App 和 Azure SQL connectionString 错误
- function - 首次尝试未找到函数
- c# - 无法在c#中将字符串转换为int
- python - Python - 字符串中的索引到匹配的单词
- python-3.x - 从 Python 向 RabbitMQ 发送 XML 文件时出现“位置参数”错误