我正在尝试实现一个服务器和多个客户端。客户端将向服务器注册,服务器应为客户端提供要调用的特定功能。我不希望特定函数是另一个rpc调用。我正在尝试为map reduce创建一个分布式系统,其中函数将在客户端进程中执行。
有没有办法在 Go 中传递函数作为对远程过程调用的响应?以下是我尝试过的:
在服务器中 :
type ResgisterResponse struct {
Ack bool
MapFunc func()
}
func (a *API) RegisterWorker(addr string, reply *ResgisterResponse) error {
a.worker[addr] = "idle" //idle, working, complete
fmt.Printf("Wokers : %+v\n", a.worker)
*reply = ResgisterResponse{
Ack: true,
MapFunc: func() {
fmt.Println("Hello Worker")
},
}
return nil
}
和在客户端中:
var reply struct {
Ack bool
MapFunc func()
}
err = client.Call("API.RegisterWorker", getLocalAddr()+":"+localPort, &reply)
must(err)
fmt.Println("Worker registered")
reply.MapFunc()
当然,我得到的指针错误为零。
panic: runtime error: invalid memory address or nil pointer dereference
FFIVE
四季花海
随时随地看视频慕课网APP
相关分类