Tags: #binarysearch #search #sort #go #golang #range
package main
import (
"fmt"
"sort"
)
func main() {
data := makeRange(200, 399)
fmt.Println(data)
needle := 299
index := sort.Search(len(data), func(i int) bool { return data[i] >= needle })
if index >= len(data) {
fmt.Printf("index %d means the needle is not in data\n\n", index)
} else {
fmt.Println("needle was found at index:", index)
}
// alternative checking conditional
if index < len(data) && data[index] == needle {
// needle is present at data[index]
fmt.Println("needle found:", data[index])
} else {
// needle is not present in data,
// but 'index' is the index where it would be inserted.
fmt.Printf("needle %d is not present in data, index is where it would be inserted: %d\n", needle, index)
}
}
func makeRange(min, max int) []int {
a := make([]int, max-min+1)
for i := range a {
a[i] = min + i
}
return a
}