How to Implement Binary Search in Go (sort.Search, slices.BinarySearch)

Use slices.BinarySearch for Go 1.21+ or sort.Search with a comparison function for older versions to efficiently find items in sorted slices.

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
}