Golang levelDB结构

我正在尝试使用以下数据库API: https://godoc.org/github.com/syndtr/goleveldb/leveldb#
(基于简单文件的键/值DB)< / p>

我能够将“键”放入数据库中。
但是,我想知道value是否可以是诸如以下的结构:</ p>

< pre> type Thm struct {
名称字符串
Age int
}
</ code> </ pre>

然后,</ p>

   var Tmp Thm 
Tmp.Name =“ Gon”
Tmp.Age = 33

db.Put([] byte(“ test3”),[] byte(Tmp),nil)
</ code > </ pre>

现在,我收到的错误是“无法将Tmp(类型Thm)转换为[] byte。</ p>

使用levelDB的经验,您能帮我完成这些操作的正常情况吗?
OR,我应该将struct转换为字节才能完成这项工作吗?</ p>

谢谢</ p>
</ DIV>

展开原文

原文

I'm trying to use following DB API: https://godoc.org/github.com/syndtr/goleveldb/leveldb# (simple file based key/value DB)

I was able to put and get "key"s into the database. However, I'm wondering if value can be a struct such as:

type Thm struct {
    Name string
    Age  int
}

Then,

var Tmp Thm
Tmp.Name = "Gon"
Tmp.Age = 33

db.Put([]byte("test3"), []byte(Tmp), nil)

Right now, the error I'm getting is "cannot covert Tmp (type Thm) to type []byte.

If you have experiences with levelDB, could you help me how normally this will be done? OR, should I convert struct into byte in order to make this work?

Thank you

1个回答



levelDB </ code>仅支持字符串/字节数组作为键和值。 这实际上是一个非常聪明的功能,因为它可以在应用程序级别保持复杂数据结构的序列化。 要序列化您的 Thm </ code>结构,可以尝试使用 gob软件包 如果您需要序列化的数据可被其他语言访问,则不需要其他语言的应用程序即可读取值,也不需要protobufs,json或msgpack。 </ p>
</ div>

展开原文

原文

levelDB only supports strings/byte arrays as keys and values. This is actually a pretty smart feature, because it keeps serialization of complex data structures at the application level. To serialize your Thm struct you can try the gob package if you don't need applications in other languages to be able to read the values, or protobufs, json, or msgpack if you need the serialized data to be accessible to other languages.

douyan7916
douyan7916 谢谢。 我想gob包可能是目前唯一的选择:)
接近 6 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐