【问题标题】:How to deal with go RPC calling with an array as its return value?如何处理以数组作为返回值的 go RPC 调用?
【发布时间】:2020-04-29 02:22:55
【问题描述】:

我想将我的服务导出为 RPC 服务,我的本地方法是从 db 中获取所有用户(结构类型),如下所示,

func GetUsers() ([]model.User) {
    // business logic
}

现在我将方法包装为 RPC 模式,如下所示,

func (api *API) RpcGetUsers(_, reply []*model.User) error {
    reply = dal.GetUsers()
    return nil
}

但是当我运行该函数时,发生了恐慌。它提到了

“方法“RpcGetUsers”的回复类型不是指针:“[]*model.User””

我该如何解决这个问题?

【问题讨论】:

    标签: go rpc


    【解决方案1】:

    RPC 文档说该方法必须如下所示:

    func (t *T) MethodName(argType T1, replyType *T2) error
    

    所以你需要一个请求和一个回复类型。你可以这样做:

    type Empty struct{}
    type Users struct {
       Users []model.User
    }
    
    func (api *API) RpcGetUsers(_ *Empty, reply *Users) error {
    ...
    }
    

    【讨论】:

    • 谢谢你的建议我会试试的
    猜你喜欢
    • 1970-01-01
    • 2021-11-28
    • 1970-01-01
    • 2014-09-24
    • 2020-08-03
    • 2015-08-16
    • 2017-01-25
    • 1970-01-01
    • 2022-01-04
    相关资源
    最近更新 更多