Функция slices.MinFunc

Функция slices.MinFunc находит минимальный элемент в слайсе, используя функцию сравнения, которую вы передаете вторым параметром. Первый параметр функции - это слайс элементов типа E, второй - функция сравнения типа func(a, b E) int, которая должна возвращать отрицательное число, если a меньше b, положительное число, если a больше b, и ноль, если они равны. Функция возвращает минимальный элемент из слайса или нулевое значение, если слайс пустой.

Синтаксис

goslices.MinFunc(slice, func)

Пример

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

gopackage main

import (
  "fmt"
  "slices"
)

func main() {
  words := []string{"apple", "banana", "kiwi", "strawberry"}
  res := slices.MinFunc(words, func(a, b string) int {
    return len(a) - len(b)
  })
  fmt.Println(res)
}

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

go"kiwi"

Пример

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

gopackage main

import (
  "fmt"
  "slices"
)

func main() {
  numbers := []int{-5, 10, -3, 8, -12}
  res := slices.MinFunc(numbers, func(a, b int) int {
    if a < 0 {
      a = -a
    }
    if b < 0 {
      b = -b
    }
    return a - b
  })
  fmt.Println(res)
}

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

go-3

Пример

Давайте найдем минимальное значение в слайсе структур по полю "Age":

gopackage main

import (
  "fmt"
  "slices"
)

type Person struct {
  Name string
  Age  int
}

func main() {
  people := []Person{
    {"Alice", 30},
    {"Bob", 25},
    {"Charlie", 35},
  }
  res := slices.MinFunc(people, func(a, b Person) int {
    return a.Age - b.Age
  })
  fmt.Println(res)
}

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

go{Bob 25}

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

  • функцию slices.Min,
    которая находит минимальный элемент с использованием встроенного сравнения
  • функцию slices.MaxFunc,
    которая находит максимальный элемент по пользовательской функции сравнения
  • функцию slices.SortFunc,
    которая сортирует слайс по пользовательской функции сравнения
  • функцию slices.CompareFunc,
    которая сравнивает два слайса по пользовательской функции сравнения