如何处理以数组作为其 return 值的 go RPC 调用?
How to deal with go RPC calling with an array as its return value?
我想将我的服务导出为 RPC 服务,我的本地方法是从数据库中获取所有用户(结构类型),如下所示,
func GetUsers() ([]model.User) {
// business logic
}
现在我将方法包装为 RPC 模式如下,
func (api *API) RpcGetUsers(_, reply []*model.User) error {
reply = dal.GetUsers()
return nil
}
但是当我 运行 函数发生恐慌时。它提到
"reply type of method "RpcGetUsers" is not a pointer: "[]*model.User""
我该如何解决这个问题?
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 {
...
}
我想将我的服务导出为 RPC 服务,我的本地方法是从数据库中获取所有用户(结构类型),如下所示,
func GetUsers() ([]model.User) {
// business logic
}
现在我将方法包装为 RPC 模式如下,
func (api *API) RpcGetUsers(_, reply []*model.User) error {
reply = dal.GetUsers()
return nil
}
但是当我 运行 函数发生恐慌时。它提到
"reply type of method "RpcGetUsers" is not a pointer: "[]*model.User""
我该如何解决这个问题?
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 {
...
}