« Back to Index

[Golang Range and Binary Search]

View original Gist on GitHub

Tags: #binarysearch #search #sort #go #golang #range

Golang Range and Binary Search.go

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
}