Функция slices.CompactFunc
Функция slices.CompactFunc удаляет последовательные повторяющиеся элементы в слайсе,
используя пользовательскую функцию для сравнения. В первый параметр мы передаем слайс,
во второй параметр мы передаем функцию сравнения, которая принимает два элемента и
возвращает true, если они считаются равными. Функция изменяет исходный слайс
и возвращает новый слайс, содержащий только уникальные элементы в порядке их первого появления.
Синтаксис
slices.CompactFunc(slice, func(a, b T) bool)
Пример
Давайте удалим последовательные дубликаты в слайсе строк с помощью пользовательской функции сравнения:
package 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)
}
Результат выполнения кода:
[a b c d]
Пример
Давайте удалим последовательные дубликаты в слайсе чисел с использованием пользовательской функции сравнения:
package 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)
}
Результат выполнения кода:
[1 2 3 4 5]
Пример
Давайте удалим последовательные дубликаты с игнорированием регистра:
package 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)
}
Результат выполнения кода:
[a b c]
Смотрите также
-
функцию
slices.Compact,
которая удаляет последовательные дубликаты с использованием стандартного сравнения -
функцию
slices.EqualFunc,
которая проверяет равенство двух слайсов с пользовательской функцией сравнения -
функцию
slices.ContainsFunc,
которая проверяет наличие элемента в слайсе с пользовательской функцией сравнения -
функцию
slices.IndexFunc,
которая возвращает индекс элемента, удовлетворяющего условию