Use slices.BinarySearch for Go 1.21+ or sort.Search for older versions to find an element in a sorted slice.
import "slices"
idx, ok := slices.BinarySearch([]int{1, 3, 5, 7}, 5)
if ok {
// Found at index 2
}
For Go 1.20 and earlier, use sort.Search with a comparison function:
import "sort"
idx := sort.Search(len(nums), func(i int) bool {
return nums[i] >= target
})
if idx < len(nums) && nums[idx] == target {
// Found
}