Как найти элемент в слайсе и map?

Junior
1k просмотров
AFK Offer AI

В map — за O(1) через обращение по ключу:

m := map[string]int{"a": 1, "b": 2}
v, ok := m["a"] // v=1, ok=true

В слайсе — линейный поиск O(n), либо с Go 1.21 через slices.Contains:

s := []int{1, 2, 3, 4, 5}

// стандартный способ for _, v := range s { if v == 3 { /* found */ } }

// Go 1.21+ slices.Contains(s, 3) // true slices.Index(s, 3) // 2

Если нужен частый поиск по слайсу — конвертируй в map (map[T]struct{}). Для отсортированного слайса — бинарный поиск: sort.Search или slices.BinarySearch.

Следующий вопрос

Что такое type switch?