func (idx *Idx) entryById(oid *objects.ObjectId) *PackedObjectId { trimmed := idx.entriesWithPrefix(oid.Bytes()[0]) if trimmed == nil { return nil } id := oid.String() if idx.idToEntry[id] != nil { return idx.idToEntry[id] } gte := func(i int) bool { var oid *objects.ObjectId oid = trimmed[i].ObjectId return oid.String() >= id } i := sort.Search(len(trimmed), gte) if i >= len(trimmed) { return nil } result := trimmed[i] if result.ObjectId.String() != id { return nil } idx.idToEntry[id] = result return result }