func (rTxn *Txn) NewIterator(opts *IteratorOptions) *Iterator {
    it := rTxn.ITxn.NewIterator(opts.Prefetch, opts.direction())
    return rangeLimitIterator(rTxn.domain, it, opts)
}
count < 0, unlimit.
offset must >= 0, if < 0, will get nothing.
package store
import (
    "time"
    "bytes"
)
type DB struct {
    IDB
}
func NewDB(idb IDB) *DB {
    return &DB{idb}
}
func (db *DB) View(domain []byte, f func(*Txn) error) error {
    wrapped := func(iTxn ITxn) error {
        return f(&Txn{iTxn, false, &Item{}, db, domain})
    }
    return db.IDB.View(wrapped)
}
func (db *DB) Update(domain []byte, f func(*Txn) error) error {
    wrapped := func(iTxn ITxn) error {
        return f(&Txn{iTxn, true, &Item{}, db, domain})
    }
    return db.IDB.Update(wrapped)
}
type Txn struct {
    ITxn
    write bool
    cachedItem *Item
    db *DB
    domain []byte
}