Функция slices.IndexFunc
Функция slices.IndexFunc возвращает индекс первого элемента в слайсе,
для которого переданная функция-предикат возвращает true.
Если ни один элемент не подходит, функция возвращает -1.
В первый аргумент передается слайс для поиска, во второй аргумент — функция,
которая принимает элемент слайса и возвращает bool.
Функция из пакета slices доступна начиная с версии Go 1.21.
Синтаксис
slices.IndexFunc(slice, func(elem T) bool)
Пример с поиском строки по длине
Найдем индекс первого элемента в слайсе строк, длина которого больше 1:
package main
import (
"fmt"
"slices"
)
func main() {
slice := []string{"a", "b", "cd", "efg"}
index := slices.IndexFunc(slice, func(s string) bool {
return len(s) > 1
})
fmt.Println(index)
}
Результат выполнения кода:
2
Пример с поиском числа по условию
Найдем индекс первого числа, которое делится на 3 без остатка:
package main
import (
"fmt"
"slices"
)
func main() {
numbers := []int{1, 2, 4, 6, 9}
index := slices.IndexFunc(numbers, func(n int) bool {
return n%3 == 0
})
fmt.Println(index)
}
Результат выполнения кода:
3
Пример с отсутствием подходящего элемента
Если в слайсе нет элемента, удовлетворяющего условию, функция возвращает -1:
package main
import (
"fmt"
"slices"
)
func main() {
slice := []string{"a", "b", "c"}
index := slices.IndexFunc(slice, func(s string) bool {
return s == "d"
})
fmt.Println(index)
}
Результат выполнения кода:
-1
Смотрите также
-
функцию
slices.Index,
которая ищет индекс конкретного значения в слайсе -
функцию
slices.ContainsFunc,
которая проверяет наличие элемента по условию -
функцию
slices.DeleteFunc,
которая удаляет элементы по условию -
функцию
slices.CompactFunc,
которая удаляет последовательные дубликаты по условию