sort.Search(n, func(i int) bool { return a[i] >= x }) возвращает минимальный индекс i, для которого условие истинно. Для поиска в отсортированном слайсе: Search возвращает позицию вставки; проверяем a[i] == x. Сложность O(log n). Условие в Search должно быть "f(i) == true => f(i+1) == true".
i := sort.Search(len(a), func(i int) bool { return a[i] >= x })
if i < len(a) && a[i] == x { return i }
return -1