Функция slices.CompactFunc

Функция slices.CompactFunc удаляет последовательные повторяющиеся элементы в слайсе, используя пользовательскую функцию для сравнения. В первый параметр мы передаем слайс, во второй параметр мы передаем функцию сравнения, которая принимает два элемента и возвращает true, если они считаются равными. Функция изменяет исходный слайс и возвращает новый слайс, содержащий только уникальные элементы в порядке их первого появления.

Синтаксис

goslices.CompactFunc(slice, func(a, b T) bool)

Пример

Давайте удалим последовательные дубликаты в слайсе строк с помощью пользовательской функции сравнения:

gopackage main

import (
  "fmt"
  "slices"
)

func main() {
  slice := []string{"a", "a", "b", "b", "c", "c", "d"}
  res := slices.CompactFunc(slice, func(a, b string) bool {
    return a == b
  })
  fmt.Println(res)
}

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

go[a b c d]

Пример

Давайте удалим последовательные дубликаты в слайсе чисел с использованием пользовательской функции сравнения:

gopackage main

import (
  "fmt"
  "slices"
)

func main() {
  slice := []int{1, 1, 2, 3, 3, 3, 4, 5, 5}
  res := slices.CompactFunc(slice, func(a, b int) bool {
    return a == b
  })
  fmt.Println(res)
}

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

go[1 2 3 4 5]

Пример

Давайте удалим последовательные дубликаты с игнорированием регистра:

gopackage main

import (
  "fmt"
  "slices"
  "strings"
)

func main() {
  slice := []string{"a", "A", "b", "B", "b", "c", "C"}
  res := slices.CompactFunc(slice, func(a, b string) bool {
    return strings.ToLower(a) == strings.ToLower(b)
  })
  fmt.Println(res)
}

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

go[a b c]

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

  • функцию slices.Compact,
    которая удаляет последовательные дубликаты с использованием стандартного сравнения
  • функцию slices.EqualFunc,
    которая проверяет равенство двух слайсов с пользовательской функцией сравнения
  • функцию slices.ContainsFunc,
    которая проверяет наличие элемента в слайсе с пользовательской функцией сравнения
  • функцию slices.IndexFunc,
    которая возвращает индекс элемента, удовлетворяющего условию