gpt4 book ai didi

go - 试图了解 Go gob 编码器的工作原理

转载 作者:数据小太阳 更新时间:2023-10-29 03:46:52 26 4
gpt4 key购买 nike

我想了解 gob 是如何工作的。我有几个问题。

我知道 gob 序列化了一个像 struct map 或 interface 这样的 go 类型(我们必须注册它的真实类型)但是:

func (dec *Decoder) Decode(e interface{}) error
Decode reads the next value from the input stream and stores it in the data represented by the
empty interface value.
If e is nil, the value will be discarded.
Otherwise, the value underlying e must be a pointer to the correct type for the next data item received.
If the input is at EOF, Decode returns io.EOF and does not modify e.

我对这份文档一无所知。它们的意思是(从输入流中读取下一个值)它们是我们可以发送给它的一个数据,它是一个结构或映射,但不是很多。它们的意思是什么如果 e 为 nil,则该值将被丢弃。请专家给我解释一下,我一整天都很沮丧,什么也没找到

最佳答案

自输入此答案后,我了解到 OP 在欺骗我们。停止喂巨魔。

您可以将多个值写入一个流。您可以从流中读取多个值。

此代码将两个值写入输出流 w,一个 io.Writer:

e := gob.NewEncoder(w)
err := e.Encode(v1)
if err != nil {
// handle error
}
err := e.Encode(v2)
if err != nil {
// handle error
}

此代码从 io.Reader 流 r 中读取值。每次调用 Decode 都会读取一个值,该值是通过调用 Decode 写入的。

d := gob.NewDecoder(r)
var v1 V
err := e.Decode(&v1)
if err != nil {
// handle error
}
var v2 V
err := e.Decode(&v2)
if err != nil {
// handle error
}

将多个值写入流可以提高效率,因为有关每个编码类型的信息只写入一次流。

关于go - 试图了解 Go gob 编码器的工作原理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32730794/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com