Golang levelDB 结构
Golang levelDB struct
我正在尝试使用以下数据库 API:https://godoc.org/github.com/syndtr/goleveldb/leveldb#
(基于简单文件 key/value 数据库)
我能够将 "key" 放入和获取到数据库中。
但是,我想知道 value 是否可以是一个结构,例如:
type Thm struct {
Name string
Age int
}
然后,
var Tmp Thm
Tmp.Name = "Gon"
Tmp.Age = 33
db.Put([]byte("test3"), []byte(Tmp), nil)
现在,我得到的错误是“无法将 Tmp(类型 Thm)转换为类型 []byte。
如果您有使用 levelDB 的经验,您能帮我了解这通常是如何完成的吗?
或者,我是否应该将 struct 转换为 byte 才能使其正常工作?
谢谢
levelDB
仅支持 strings/byte 数组作为键和值。这实际上是一个非常聪明的功能,因为它在应用程序级别保持复杂数据结构的序列化。要序列化你的 Thm
结构,你可以尝试 gob package 如果你不需要其他语言的应用程序能够读取值,或者如果你需要 protobufs,json 或 msgpack其他语言可以访问序列化数据。
我正在尝试使用以下数据库 API:https://godoc.org/github.com/syndtr/goleveldb/leveldb# (基于简单文件 key/value 数据库)
我能够将 "key" 放入和获取到数据库中。 但是,我想知道 value 是否可以是一个结构,例如:
type Thm struct {
Name string
Age int
}
然后,
var Tmp Thm
Tmp.Name = "Gon"
Tmp.Age = 33
db.Put([]byte("test3"), []byte(Tmp), nil)
现在,我得到的错误是“无法将 Tmp(类型 Thm)转换为类型 []byte。
如果您有使用 levelDB 的经验,您能帮我了解这通常是如何完成的吗? 或者,我是否应该将 struct 转换为 byte 才能使其正常工作?
谢谢
levelDB
仅支持 strings/byte 数组作为键和值。这实际上是一个非常聪明的功能,因为它在应用程序级别保持复杂数据结构的序列化。要序列化你的 Thm
结构,你可以尝试 gob package 如果你不需要其他语言的应用程序能够读取值,或者如果你需要 protobufs,json 或 msgpack其他语言可以访问序列化数据。