code: func NewMergeIterator(itrs []Iterator, f MergeFunc) (*MergeIterator, error) {
  	rv := &MergeIterator{
  		itrs:    itrs,
  		f:       f,
  		currKs:  make([][]byte, len(itrs)),
  		currVs:  make([]uint64, len(itrs)),
  		lowIdxs: make([]int, 0, len(itrs)),
  		mergeV:  make([]uint64, 0, len(itrs)),
  	}
  	rv.init()
  	if rv.lowK == nil {
  		return rv, ErrIteratorDone
  	}
  	return rv, nil
  }
docs: // NewMergeIterator creates a new MergeIterator over the provided slice of
  // Iterators and with the specified MergeFunc to resolve duplicate keys.