我需要使用包定义一个Send/Receive
函数。gob
我Send()
简单定义如下:
func Send(enc *gob.Encoder, PKG interface{}) error {
err := enc.Encode(PKG)
return err
}
如下Receive
:
func Receive(dec *gob.Decoder) (PKG interface{}) {
err := dec.Decode(PKG)
if err != nil {
fmt.Println(PKG)
Errors.Error(err, "Error receiving Package")
}
if PKG == nil {
fmt.Println(PKG)
Errors.Error(err, "Receiving empty Package")
}
return PKG
}
我将这些函数与各种类型一起使用:结构、具体类型、iota ......我在调用Receive
方法后立即检查接收到的类型。
但是,不幸的是,我没有到达检查断点。这些方法 ( Send/Receive
) 定义错误。尽管所有发送的项目都已导出,但我在接收方获得了一个<nil>
指针 ( )。panic: Receiving empty Package
目前,我正在尝试发送int
以下定义的类型:
type ProcessType int
const (
COORDINATOR ProcessType = iota
SENDER
NORMALPROCESS
)
我已经阅读了很多文档,但无法彻底理解这个问题。您能否提供一个简洁明了的解释。