首页 >后端开发 >Golang >在循环中从 Go 结构体数组中删除元素时如何避免'超出范围”错误?

在循环中从 Go 结构体数组中删除元素时如何避免'超出范围”错误?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-04 21:30:12666浏览

How to Avoid

在 Go 中循环中从结构体数组中删除元素

问题:
从数组中删除元素时循环内的结构体,“超出范围”错误可能

解决方案:
要从结构体数组中按键删除元素,建议使用以下切片技巧之一:

a = append(a[:i], a[i+1:]...)

a = a[:i+copy(a[i:], a[i+1:])]

重要注意:
如果从正在循环的切片中删除元素,使用向下循环以避免跳过元素至关重要。

修改代码:

// Your original loop with the issue:
// for i, application := range config.Applications {
//   if i == 1 {
//     config.Applications = _removeApplication(i, config.Applications)
//   }
// }

// Corrected code using downward loop:
for i := len(config.Applications) - 1; i >= 0; i-- {
    application := config.Applications[i]
    // Condition to decide if current element has to be deleted:
    if haveToDelete {
        config.Applications = append(config.Applications[:i],
                config.Applications[i+1:]...)
    }
}

以上是在循环中从 Go 结构体数组中删除元素时如何避免'超出范围”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn