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

Функция 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,
    которая удаляет последовательные дубликаты по условию
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить