В 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.