在 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中文网其他相关文章!