Je reçois leveldb tous les key-val à un octet de carte [chaîne] [], mais il ne fonctionne pas comme mon attente. Code est comme ci-dessousgolang leveldb get erreur d'instantané
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))
}
}
mais le résultat est inférieur key3: value9 key6: value9 key7: value9 key8: value9 key1: value9 key2: value9 key4: value9 key5: value9 key9: value9 Key0: value9 plutôt pas Key0: value0
merci beaucoup pour votre réponse et cela fonctionne.Mais pourquoi la valeur est-elle modifiée? Un peu confus. –