Удалить элемент среза в течение
Идиоматический метод удаления элементаi
от ломтикаa
Сохраняя порядок, кажется:
a = append(a[:i], a[i+1:]...)
Мне было интересно, что будет лучшим способом сделать это внутри цикла. Как я понимаю, невозможно использовать его в диапазоне для:
for i := range a { // BAD
if conditionMeets(a[i]) {
a = append(a[:i], a[i+1:]...)
}
}
Однако можно использоватьlen(a)
, [РЕДАКТИРОВАТЬ: это не работает, см. Ответы ниже]
for i := 0; i < len(a); i++ {
if conditionMeets(a[i]) {
a = append(a[:i], a[i+1:]...)
}
}
Есть ли лучший или более идиоматический способ, чем использованиеlen
или жеappend
?