我正在嘗試使用一個遠程過程,該過程將在結(jié)構(gòu)中設(shè)置回復(fù),具有布爾狀態(tài)和字符串作為下一個輸入。在此過程中,我將布爾狀態(tài)設(shè)置為 true,并將值放入輸入中。但在客戶端中,它獲得錯誤狀態(tài)和空字符串。在過程中: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:}我在這里錯過了什么?我已經(jīng)把整個代碼放在 https://github.com/Brotchu/ProjectMR 該過程在協(xié)調(diào)器中定義,客戶端在工作線程中定義。將其全部粘貼到此處可能太多了。
2 回答

慕仙森
TA貢獻1827條經(jīng)驗 獲得超8個贊
客戶端結(jié)構(gòu)看起來只由零值(和空字符串)組成。false
我認為這個電話不會改變回復(fù)。我認為這是因為也不會改變回復(fù)。client.CallMapJob
reply = &mr.MapResponse{
Status: newStatus,
Input: newIn,
}
應(yīng)該是
reply.Status = newStatus
reply.Input = newIn

慕尼黑5688855
TA貢獻1848條經(jīng)驗 獲得超2個贊
您必須更改在調(diào)用期間傳遞的回復(fù)值,因此請?zhí)鎿Q
reply = &mr.MapResponse{ Status: newStatus, Input: newIn, }
跟
*reply = mr.MapResponse{ Status: newStatus, Input: newIn, }
- 2 回答
- 0 關(guān)注
- 107 瀏覽
添加回答
舉報
0/150
提交
取消