【发布时间】:2017-07-25 21:34:21
【问题描述】:
我得到了 leveldb 的所有 key-val 到 map[string][]byte,但它没有按我的预期运行。 代码如下
package main
import (
"fmt"
"strconv"
"github.com/syndtr/goleveldb/leveldb"
)
func main() {
db, err := leveldb.OpenFile("db", nil)
if err != nil {
panic(err)
}
defer db.Close()
for i := 0; i < 10; i++ {
err := db.Put([]byte("key"+strconv.Itoa(i)), []byte("value"+strconv.Itoa(i)), nil)
if err != nil {
panic(err)
}
}
snap, err := db.GetSnapshot()
if err != nil {
panic(err)
}
if snap == nil {
panic("snap shot is nil")
}
data := make(map[string][]byte)
iter := snap.NewIterator(nil, nil)
for iter.Next() {
Key := iter.Key()
Value := iter.Value()
data[string(Key)] = Value
}
iter.Release()
if iter.Error() != nil {
panic(iter.Error())
}
for k, v := range data {
fmt.Println(string(k) + ":" + string(v))
}
}
但结果如下 键3:值9 键6:值9 键7:值9 键8:值9 键1:值9 键2:值9 键4:值9 键5:值9 键9:值9 键0:值9 而不是 key0:value0
【问题讨论】: