我正在尝试通过 RPC 发送一个具体的实现。 RPC 方法需要一个接口(interface)。
相关的代码片段是:
在包 node
中:
type Commander interface {
Action() string
}
type Approach struct {
Position int
}
func (p Approach) Action() string {
return "Approach"
}
func (t *RPCMethod) RPCAction(command Commander, reply *int) error {
// RPC Method
}
在包 main
中:
import "node"
gob.Register(node.Approach{})
var p = node.Approach{position}
var q node.Commander = p
var reply int
err = client.Call("RPCMethod.RPCAction",&q, &reply)
我已经在 gob 中注册了 node.Approach。但是在运行我收到的主程序时
gob: name not registered for interface: "node.Approach"
对我做错了什么有什么想法吗?或者如何注册名字?
最佳答案
是的,您已经向 gob 注册了 node.Approach
。但是随后您传递了 q
,不是 node.Approach
。改为发送 p
,因为它具有您注册的类型。
关于go - 名称未注册接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15182905/