为了账号安全,请及时绑定邮箱和手机立即绑定

RPC 响应不正确

RPC 响应不正确

Go
UYOU 2022-08-15 10:18:34
我正在尝试使用一个远程过程,该过程将在结构中设置回复,具有布尔状态和字符串作为下一个输入。在此过程中,我将布尔状态设置为 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


查看完整回答
反对 回复 2022-08-15
?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

您必须更改在调用期间传递的回复值,因此请替换

reply = &mr.MapResponse{
    Status: newStatus,
    Input:  newIn,
}

*reply = mr.MapResponse{
    Status: newStatus,
    Input:  newIn,
}


查看完整回答
反对 回复 2022-08-15
  • 2 回答
  • 0 关注
  • 72 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信