РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
266 of 1593 menu

Функция slices.CompareFunc

Функция slices.CompareFunc из пакета slices сравнивает два слайса поэлементно, используя переданную пользовательскую функцию для определения порядка элементов. Она возвращает int: отрицательное число, если первый слайс меньше второго, ноль, если слайсы равны, и положительное число, если первый слайс больше второго. Первым и вторым параметрами функция принимает сравниваемые слайсы, третьим — функцию сравнения, которая должна возвращать отрицательное, нулевое или положительное значение для двух элементов.

Синтаксис

slices.CompareFunc(s1, s2, func(a, b T) int { // логика сравнения })

Пример

Сравним два слайса целых чисел по возрастанию:

package main import ( "fmt" "slices" ) func main() { s1 := []int{1, 2, 3} s2 := []int{1, 2, 4} res := slices.CompareFunc(s1, s2, func(a, b int) int { if a < b { return -1 } else if a > b { return 1 } return 0 }) fmt.Println(res) }

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

-1

Функция вернула -1, потому что на третьей позиции элемент 3 меньше 4.

Пример

Сравним два слайса строк по длине элементов:

package main import ( "fmt" "slices" ) func main() { s1 := []string{"a", "bb", "ccc"} s2 := []string{"a", "bb", "dd"} res := slices.CompareFunc(s1, s2, func(a, b string) int { if len(a) < len(b) { return -1 } else if len(a) > len(b) { return 1 } return 0 }) fmt.Println(res) }

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

0

Функция вернула 0, потому что длины элементов на всех позициях совпадают: "ccc" и "dd" имеют длину 3 и 2 соответственно.

Пример

Сравним слайсы, где первый меньше второго из-за длины:

package main import ( "fmt" "slices" ) func main() { s1 := []int{1, 2} s2 := []int{1, 2, 3} res := slices.CompareFunc(s1, s2, func(a, b int) int { return a - b }) fmt.Println(res) }

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

-1

Функция вернула -1, так как первый слайс закончился раньше, и считается меньшим.

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

  • функцию slices.Compare,
    которая сравнивает слайсы по стандартному порядку
  • функцию slices.EqualFunc,
    которая проверяет равенство слайсов с произвольной логикой
  • функцию slices.SortFunc,
    которая сортирует слайс с пользовательской функцией
  • функцию slices.IndexFunc,
    которая ищет первый элемент, удовлетворяющий условию
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить