0402: 迭代器

KV.Seek() 返回一个迭代器,初始位置通过二分查找 key 获得,即首个大于等于 key 的位置。这样实现了实现按顺序遍历的功能。

func (kv *KV) Seek(key []byte) (*KVIterator, error)
// 遍历是否结束?
func (iter *KVIterator) Valid() bool
// 当前元素
func (iter *KVIterator) Key() []byte
func (iter *KVIterator) Val() []byte
// 移动到下一个元素
func (iter *KVIterator) Next() error
func (iter *KVIterator) Prev() error

type KVIterator struct {
    keys [][]byte
    vals [][]byte
    pos  int // 位置
}

迭代器这样使用:

for iter, err = kv.Seek(start); err == nil && iter.Valid(); err = iter.Next() {
    key, val := iter.Key(), iter.Val()
    // ...
}

您正在阅读免费版教程,从第4章起只有简单的指引,适合爱好挑战和自学的读者。
可以购买有详细指导+背景知识的完整版