Функция slices.DeleteFunc
Функция slices.DeleteFunc удаляет из слайса все элементы,
для которых переданная функция-предикат возвращает true.
Первый параметр функции — исходный слайс, второй параметр —
функция-предикат, которая принимает элемент слайса и возвращает
bool. Функция возвращает новый слайс, содержащий только
те элементы, для которых предикат вернул false.
Синтаксис
slices.DeleteFunc(slice, func(elem T) bool)
Пример
Давайте удалим из слайса все четные числа:
package main
import (
"fmt"
"slices"
)
func main() {
nums := []int{1, 2, 3, 4, 5}
res := slices.DeleteFunc(nums, func(n int) bool {
return n%2 == 0
})
fmt.Println(res)
}
Результат выполнения кода:
[1 3 5]
Пример
Давайте удалим из слайса все строки длиной более 1 символа:
package main
import (
"fmt"
"slices"
)
func main() {
chars := []string{"a", "bc", "d", "ef", "g"}
res := slices.DeleteFunc(chars, func(s string) bool {
return len(s) > 1
})
fmt.Println(res)
}
Результат выполнения кода:
[a d g]
Пример
Давайте удалим из слайса все элементы, равные целевой строке:
package main
import (
"fmt"
"slices"
)
func main() {
items := []string{"x", "y", "z", "x", "x", "y"}
target := "x"
res := slices.DeleteFunc(items, func(s string) bool {
return s == target
})
fmt.Println(res)
}
Результат выполнения кода:
[y z y]
Смотрите также
-
функцию
slices.Delete,
которая удаляет диапазон элементов по индексам -
функцию
slices.ContainsFunc,
которая проверяет наличие элемента по условию -
функцию
slices.CompactFunc,
которая удаляет последовательные дубликаты по условию -
функцию
slices.Reverse,
которая изменяет порядок элементов слайса на противоположный