猿问

直接在源代码中使用 gobs 可以吗?

我想知道是否可以在源代码中直接使用 gob 编码数据(例如在函数中)。原因是通过不必访问磁盘来获取 gob 文件来提高性能。我知道 memcached、redis 和朋友。我不需要 TTL 或任何其他花哨的功能。只是在内存中映射。数据将在“设置”/构建过程中的源代码中进行编码和转储,以便在运行时只需要对其进行“解码”。


go 应用程序基本上将用作小型只读嵌入式数据库。我可以使用 json(基本上用原始 json 声明一个 var)来做到这一点,但我想会有性能损失,所以我想知道 gob 是否可能。


我尝试了不同的东西,但我无法让它工作,因为基本上我不知道如何定义 gob var (byte, [bytes] ?? ) 并且解码器似乎期望 io.Reader 所以在消费之前一整天,我决定问你们,至少,如果有可能的话。


悲惨的尝试:


var test string

test = "hello"


p := new(bytes.Buffer)

e := gob.NewEncoder(p)

e.Encode(test)

ers := ioutil.WriteFile("test.gob", p.Bytes(), 0600)

if ers != nil {

    panic(ers)

}

现在我想使用 test.gob 并将其添加到一个函数中。如我所见,test.gob 的源代码如下^H^L^@^Ehello


var test string


var b bytes.Buffer


b = byte("^H^L^@^Ehello")


de := gob.NewDecoder(b.Bytes())


er := de.Decode(&test)

if er != nil {

    fmt.Printf("cannot decode")

    panic(er)

}


fmt.Fprintf(w, test)


犯罪嫌疑人X
浏览 169回答 2
2回答
随时随地看视频慕课网APP

相关分类

Go
我要回答