Функция slices.EqualFunc

Функция slices.EqualFunc проверяет, равны ли два слайса, используя пользовательскую функцию для сравнения элементов. Она возвращает true, если слайсы имеют одинаковую длину и все элементы попарно удовлетворяют условию, заданному функцией сравнения, и false в противном случае. Первым и вторым параметрами функция принимает сравниваемые слайсы, третьим - функцию сравнения элементов.

Синтаксис

goslices.EqualFunc(slice1, slice2, func(a, b T) bool)

Пример 'basic'

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

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

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

gotrue

Пример 'custom'

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

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

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

gotrue

Пример 'different'

Давайте проверим случай, когда слайсы имеют разные длины:

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

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

gofalse

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

  • функцию slices.Equal,
    которая сравнивает два слайса с использованием оператора сравнения
  • функцию slices.Compare,
    которая сравнивает два слайса с использованием оператора сравнения
  • функцию slices.CompareFunc,
    которая сравнивает два слайса с использованием пользовательской функции
  • функцию slices.ContainsFunc,
    которая проверяет наличие элемента, удовлетворяющего условию