Go RPC调用找不到方法

Go RPC调用找不到方法,go,rpc,distributed-system,consensus,raft,Go,Rpc,Distributed System,Consensus,Raft,我正在尝试实现Raft一致性算法,但由于某些原因,在使用RPC调用时遇到了问题。我正在使用labrpc.go打电话 我的功能签名: func (rf *Raft) RequestVotes(args RequestVoteArgs, reply *RequestVoteReply) bool func (rf *Raft) RequestVotes(args RequestVoteArgs, reply *RequestVoteReply) { 还有我正在打的电话 if err := rf.

我正在尝试实现Raft一致性算法,但由于某些原因,在使用RPC调用时遇到了问题。我正在使用labrpc.go打电话

我的功能签名:

func (rf *Raft) RequestVotes(args RequestVoteArgs, reply *RequestVoteReply) bool
func (rf *Raft) RequestVotes(args RequestVoteArgs, reply *RequestVoteReply) {
还有我正在打的电话

if err := rf.peers[peerIdx].Call("Raft.RequestVotes", args, &reply); err == false {
筏板结构:

type Raft struct {
... 
peers     []*labrpc.ClientEnd // RPC end points of all peers
...
}
但我一直在犯这样的错误:

labrpc.Service.dispatch():Raft.RequestVotes中的未知方法RequestVotes;期待[]中的一个


我还有几个其他的
Raft.
方法,所以期望[]中的一个是非空的吗?

RPC方法没有被识别为RPC方法,因为我显式返回
bool
。将代码更改为returnvoid(完全删除return)修复了该问题

更新的函数签名:

func (rf *Raft) RequestVotes(args RequestVoteArgs, reply *RequestVoteReply) bool
func (rf *Raft) RequestVotes(args RequestVoteArgs, reply *RequestVoteReply) {