gob 解码器试图解码成非指针

标签 go gob

在我的 Go 程序中,我用 gob 编码 []byte 数据

buf := new(bytes.Buffer)
    enc := gob.NewEncoder(buf)
        //data is []byte
        buf.Reset()
        enc.Encode(data)

但是当我尝试解码时得到'gob decoder attempted to decode into a non-pointer'

buf := new(bytes.Buffer)
    d := gob.NewDecoder(buf)
        d.Decode(data)
        log.Printf("%s", d)

最佳答案

Gob 需要你传递一个指针来解码。

在你的情况下,你会这样做:

    d.Decode(&data)

原因是,它可能必须修改 slice (即:使其更大,以适应解码后的数组)

关于gob 解码器试图解码成非指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42598913/

相关文章:

go - 反序列化未知的 Go 的 gob blob

rest - 在 Go 中将路由注册到中心对象

file - 写入文件然后立即读回

go - Youtube Content ID API 总是返回 Not Found

Goroutines channel 和 "stopping short"

go - 跨多个 goroutine 使用单个互斥锁

sockets - 在 Go 中写入客户端 UDP 套接字

go - 编码/gob 是确定性的吗?

go - 使用 Gob 解码和编码接口(interface){}

json - encoding/gob 和 encoding/json 的区别