Функция slices.DeleteFunc

Функция slices.DeleteFunc удаляет из слайса все элементы, для которых переданная функция-предикат возвращает true. Первый параметр функции — исходный слайс, второй параметр — функция-предикат, которая принимает элемент слайса и возвращает bool. Функция возвращает новый слайс, содержащий только те элементы, для которых предикат вернул false.

Синтаксис

goslices.DeleteFunc(slice, func(elem T) bool)

Пример

Давайте удалим из слайса все четные числа:

gopackage 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)
}

Результат выполнения кода:

go[1 3 5]

Пример

Давайте удалим из слайса все строки длиной более 1 символа:

gopackage 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)
}

Результат выполнения кода:

go[a d g]

Пример

Давайте удалим из слайса все элементы, равные целевой строке:

gopackage 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)
}

Результат выполнения кода:

go[y z y]

Смотрите также

  • функцию slices.Delete,
    которая удаляет диапазон элементов по индексам
  • функцию slices.ContainsFunc,
    которая проверяет наличие элемента по условию
  • функцию slices.CompactFunc,
    которая удаляет последовательные дубликаты по условию
  • функцию slices.Reverse,
    которая изменяет порядок элементов слайса на противоположный