我正在尝试实现一个服务器和多个客户端。客户端将向服务器注册,服务器应为客户端提供要调用的特定功能。我不希望特定函数是另一个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
1 回答
- 1 回答
- 0 关注
- 225 浏览
添加回答
举报
0/150
提交
取消
