Функция slices.EqualFunc
Функция slices.EqualFunc проверяет,
равны ли два слайса, используя пользовательскую функцию
для сравнения элементов. Она возвращает
true, если слайсы имеют одинаковую длину
и все элементы попарно удовлетворяют условию,
заданному функцией сравнения, и false
в противном случае. Первым и вторым параметрами
функция принимает сравниваемые слайсы, третьим -
функцию сравнения элементов.
Синтаксис
slices.EqualFunc(slice1, slice2, func(a, b T) bool)
Пример 'basic'
Давайте сравним два слайса целых чисел на равенство с помощью пользовательской функции:
package main
import (
"fmt"
"slices"
)
func main() {
slice1 := []int{1, 2, 3, 4, 5}
slice2 := []int{1, 2, 3, 4, 5}
res := slices.EqualFunc(slice1, slice2, func(a, b int) bool {
return a == b
})
fmt.Println(res)
}
Результат выполнения кода:
true
Пример 'custom'
Давайте сравним слайсы с использованием функции, которая игнорирует регистр символов:
package main
import (
"fmt"
"slices"
"strings"
)
func main() {
slice1 := []string{"a", "b", "c"}
slice2 := []string{"A", "B", "C"}
res := slices.EqualFunc(slice1, slice2, func(a, b string) bool {
return strings.ToLower(a) == strings.ToLower(b)
})
fmt.Println(res)
}
Результат выполнения кода:
true
Пример 'different'
Давайте проверим случай, когда слайсы имеют разные длины:
package main
import (
"fmt"
"slices"
)
func main() {
slice1 := []string{"a", "b", "c"}
slice2 := []string{"a", "b"}
res := slices.EqualFunc(slice1, slice2, func(a, b string) bool {
return a == b
})
fmt.Println(res)
}
Результат выполнения кода:
false
Смотрите также
-
функцию
slices.Equal,
которая сравнивает два слайса с использованием оператора сравнения -
функцию
slices.Compare,
которая сравнивает два слайса с использованием оператора сравнения -
функцию
slices.CompareFunc,
которая сравнивает два слайса с использованием пользовательской функции -
функцию
slices.ContainsFunc,
которая проверяет наличие элемента, удовлетворяющего условию