👣Как в Golang проверить, содержит ли массив значение?
▶️Итак вопрос: как проверить, есть ли значение в массиве Go?
Есть функция strings.Contains, но она проверяет есть ли строка в строке, не массив. Есть ли функция для этого, или надо писать свою?
▶️Сразу к сути: если массив не отсортирован, то есть функция slices.IndexFunc
// искать индекс элемента target idx := slices.IndexFunc(someSlice, func (elt E) { return elt == target }) if idx >= 0 { /* найден */ }
Но это реально тривиальная функция:
func IndexFunc[E any](s []E, f func(E) bool) int { for i := range s { if f(s[i]) { return i } } return -1 }
Если же массив отсортирован, то есть функция поиска делением пополам slices.BinarySearch - ищет для типов, для которых определено сравнение <. В общем случае есть поиск по отсортированному слайсу с компаратором slices.BinarySearchFunc
👣Как в Golang проверить, содержит ли массив значение?
▶️Итак вопрос: как проверить, есть ли значение в массиве Go?
Есть функция strings.Contains, но она проверяет есть ли строка в строке, не массив. Есть ли функция для этого, или надо писать свою?
▶️Сразу к сути: если массив не отсортирован, то есть функция slices.IndexFunc
// искать индекс элемента target idx := slices.IndexFunc(someSlice, func (elt E) { return elt == target }) if idx >= 0 { /* найден */ }
Но это реально тривиальная функция:
func IndexFunc[E any](s []E, f func(E) bool) int { for i := range s { if f(s[i]) { return i } } return -1 }
Если же массив отсортирован, то есть функция поиска делением пополам slices.BinarySearch - ищет для типов, для которых определено сравнение <. В общем случае есть поиск по отсортированному слайсу с компаратором slices.BinarySearchFunc
To upload a logo, click the Menu icon and select “Manage Channel.” In a new window, hit the Camera icon. Healing through screaming therapy “Hey degen, are you stressed? Just let it all out,” he wrote, along with a link to join the group. Telegram desktop app: In the upper left corner, click the Menu icon (the one with three lines). Select “New Channel” from the drop-down menu. In 2018, Telegram’s audience reached 200 million people, with 500,000 new users joining the messenger every day. It was launched for iOS on 14 August 2013 and Android on 20 October 2013.
from us