我正在尝试使用一个远程过程,该过程将在结构中设置回复,具有布尔状态和字符串作为下一个输入。在此过程中,我将布尔状态设置为 true,并将值放入输入中。但在客户端中,它获得错误状态和空字符串。在过程中:func(c *Coordinator)MapJob(req mr.MapRequest, reply *mr.MapResponse) error { //logic to set up response... reply = &mr.MapResponse{ Status: newStatus, Input: newIn, } fmt.Printf("[REPLY] %+v\n", reply) return nil}指纹[REPLY] &{Status:true Input:1.txt}在客户端中时:err := client.Call("Coordinator.MapJob", req, &reply) fmt.Printf("reply from procedure %+v\n", reply)指纹:reply from procedure {Status:false Input:}我在这里错过了什么?我已经把整个代码放在 https://github.com/Brotchu/ProjectMR 该过程在协调器中定义,客户端在工作线程中定义。将其全部粘贴到此处可能太多了。
2 回答
慕仙森
TA贡献1827条经验 获得超7个赞
客户端结构看起来只由零值(和空字符串)组成。false
我认为这个电话不会改变回复。我认为这是因为也不会改变回复。client.CallMapJob
reply = &mr.MapResponse{
Status: newStatus,
Input: newIn,
}
应该是
reply.Status = newStatus
reply.Input = newIn
慕尼黑5688855
TA贡献1848条经验 获得超2个赞
您必须更改在调用期间传递的回复值,因此请替换
reply = &mr.MapResponse{ Status: newStatus, Input: newIn, }
跟
*reply = mr.MapResponse{ Status: newStatus, Input: newIn, }
- 2 回答
- 0 关注
- 72 浏览
添加回答
举报
0/150
提交
取消