Функция slices.MaxFunc
Функция slices.MaxFunc находит максимальное значение
в слайсе, используя для сравнения пользовательскую функцию.
Она возвращает максимальный элемент согласно заданной логике
сравнения. Первым аргументом функция принимает слайс,
вторым — функцию сравнения, которая возвращает положительное
число, если первый элемент больше второго.
Синтаксис
slices.MaxFunc(slice, func(a, b T) int)
Пример с числами
Давайте найдем максимальное число в слайсе чисел:
package main
import (
"fmt"
"slices"
)
func main() {
nums := []int{5, 2, 8, 1, 9, 3}
res := slices.MaxFunc(nums, func(a, b int) int {
return a - b
})
fmt.Println(res)
}
Результат выполнения кода:
9
Пример со строками
Найдем самую длинную строку в слайсе строк:
package main
import (
"fmt"
"slices"
)
func main() {
words := []string{"a", "abc", "ab", "abcd", "b"}
res := slices.MaxFunc(words, func(a, b string) int {
return len(a) - len(b)
})
fmt.Println(res)
}
Результат выполнения кода:
"abcd"
Пример со структурой
Найдем пользователя с максимальным возрастом в слайсе структур:
package main
import (
"fmt"
"slices"
)
type User struct {
Name string
Age int
}
func main() {
users := []User{
{"Alice", 25},
{"Bob", 30},
{"Charlie", 28},
}
res := slices.MaxFunc(users, func(a, b User) int {
return a.Age - b.Age
})
fmt.Println(res)
}
Результат выполнения кода:
{Bob 30}
Смотрите также
-
функцию
slices.Max,
которая находит максимальный элемент без пользовательской функции -
функцию
slices.MinFunc,
которая находит минимальный элемент по пользовательской функции -
функцию
slices.SortFunc,
которая сортирует слайс по пользовательской функции -
функцию
slices.IsSortedFunc,
которая проверяет отсортирован ли слайс по пользовательской функции