Функция slices.ContainsFunc
Функция slices.ContainsFunc проверяет,
содержится ли в слайсе элемент, удовлетворяющий
условию, заданному в функции обратного вызова.
Она возвращает true, если хотя бы один
элемент соответствует условию, и false
в противном случае. Первым параметром функция
принимает слайс для поиска, вторым - функцию
предикат, которая возвращает true
для подходящего элемента.
Синтаксис
slices.ContainsFunc(slice, func)
Базовый пример с числами
Давайте проверим, содержит ли слайс чисел положительное число:
package main
import (
"fmt"
"slices"
)
func main() {
numbers := []int{-5, -3, 0, 2, 7}
res := slices.ContainsFunc(numbers, func(n int) bool {
return n > 0
})
fmt.Println(res)
}
Результат выполнения кода:
true
Поиск по строковому условию
Проверим, содержит ли слайс строк строку, начинающуюся с определенной буквы:
package main
import (
"fmt"
"slices"
"strings"
)
func main() {
words := []string{"apple", "banana", "cherry", "date"}
res := slices.ContainsFunc(words, func(s string) bool {
return strings.HasPrefix(s, "b")
})
fmt.Println(res)
}
Результат выполнения кода:
true
Поиск с пользовательским типом
Проверим, есть ли в слайсе структур человек с возрастом больше определенного значения:
package main
import (
"fmt"
"slices"
)
type Person struct {
Name string
Age int
}
func main() {
people := []Person{
{Name: "Alice", Age: 25},
{Name: "Bob", Age: 30},
{Name: "Charlie", Age: 35},
}
res := slices.ContainsFunc(people, func(p Person) bool {
return p.Age > 30
})
fmt.Println(res)
}
Результат выполнения кода:
true
Случай, когда элемент не найден
Проверим, содержит ли слайс чисел число, кратное 10:
package main
import (
"fmt"
"slices"
)
func main() {
numbers := []int{3, 7, 12, 25, 33}
res := slices.ContainsFunc(numbers, func(n int) bool {
return n%10 == 0
})
fmt.Println(res)
}
Результат выполнения кода:
false
Проверка на пустой слайс
Посмотрим, что вернет функция для пустого слайса:
package main
import (
"fmt"
"slices"
)
func main() {
var numbers []int
res := slices.ContainsFunc(numbers, func(n int) bool {
return n > 0
})
fmt.Println(res)
}
Результат выполнения кода:
false
Смотрите также
-
функцию
slices.Contains,
которая проверяет наличие конкретного элемента в слайсе -
функцию
slices.IndexFunc,
которая возвращает индекс первого элемента, удовлетворяющего условию -
функцию
slices.DeleteFunc,
которая удаляет все элементы, удовлетворяющие условию -
функцию
slices.EqualFunc,
которая сравнивает слайсы с использованием пользовательской функции