Функция slices.MinFunc
Функция slices.MinFunc находит минимальный элемент в слайсе,
используя функцию сравнения, которую вы передаете вторым параметром.
Первый параметр функции - это слайс элементов типа E, второй -
функция сравнения типа func(a, b E) int, которая должна
возвращать отрицательное число, если a меньше b,
положительное число, если a больше b, и ноль,
если они равны. Функция возвращает минимальный элемент из слайса
или нулевое значение, если слайс пустой.
Синтаксис
slices.MinFunc(slice, func)
Пример
Давайте найдем минимальную строку по длине в слайсе строк:
package 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)
}
Результат выполнения кода:
"kiwi"
Пример
Давайте найдем минимальное число по модулю в слайсе целых чисел:
package 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)
}
Результат выполнения кода:
-3
Пример
Давайте найдем минимальное значение в слайсе структур по полю "Age":
package 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)
}
Результат выполнения кода:
{Bob 25}
Смотрите также
-
функцию
slices.Min,
которая находит минимальный элемент с использованием встроенного сравнения -
функцию
slices.MaxFunc,
которая находит максимальный элемент по пользовательской функции сравнения -
функцию
slices.SortFunc,
которая сортирует слайс по пользовательской функции сравнения -
функцию
slices.CompareFunc,
которая сравнивает два слайса по пользовательской функции сравнения