Ah, my last post had a small mistake. A small modification to upper should
be all you need. The function should use >= instead of >. See below.
upper := sort.Search(len(haystack), func(i int) bool {
return haystack[i].name >= needle.name
})
On Tue, Oct 11, 2022, 7:38 AM K. Alex Mills wro
sort.Search runs binary search. It's only guaranteed to work when you
provide it with a function which is monotonic -- true at index i implies
true at all indices greater than i.
Your loop style search does not provide a monotonic function, whereas your
"upper" function is monotonic. However, sinc