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

我能够将“密钥”放入数据库中。
但是,我想知道值是否可以是一个结构,例如:

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仅支持将字符串/字节数组用作键和值。这实际上是一个非常聪明的功能,因为它可以在应用程序级别保持复杂数据结构的序列化。要序列化Thm结构,如果不需要其他语言的应用程序即可读取值,则可以尝试gob package;如果需要序列化的数据可用于其他语言,则可以尝试使用protobufs,json或msgpack。

10-06 15:22