我有一个带有未导出字段的结构,应该对其进行 gob 编码和解码。
说:
type A struct {
s int
}
func (a *A) Inc() {
a.s++
}
显然在那种情况下我需要实现gob.GobEncoder
和gob.GobDecoder
接口。如果我直接使用结构,一切正常:
https://play.golang.org/p/dm3HwaI8eU
但我还需要一个实现相同逻辑且可序列化的接口:
type Incer interface {
gob.GobEncoder
gob.GobDecoder
Inc()
}
完整代码: https: //play.golang.org/p/Zig2mPrnrq
突然它惊慌失措:
panic: interface conversion: interface is nil, not gob.GobDecoder [recovered]
panic: interface conversion: interface is nil, not gob.GobDecoder
但是,如果我将 gob 接口注释掉,一切都会再次恢复正常。
我错过了什么重要的东西吗?因为所描述的行为对我来说似乎很奇怪