func (self record_slice) find(key bs.ByteSlice) (int, bool) { var l int = 0 var r int = len(self) - 1 var m int for l <= r { m = ((r - l) >> 1) + l if key.Lt(self[m].key) { r = m - 1 } else if key.Eq(self[m].key) { for j := m; j >= 0; j-- { if j == 0 || !key.Eq(self[j-1].key) { return j, true } } } else { l = m + 1 } } return l, false }