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

使用 JSON-RPC 编组数据时出错 - 我是不是傻?

使用 JSON-RPC 编组数据时出错 - 我是不是傻?

Go
catspeake 2021-11-08 10:07:52
因此,我正在使用类似于以下的代码,并且无法让 RPC 在 FooHolder 中工作,它包含满足接口的对象。我可能遗漏了一些东西,但看起来它应该可以工作 - 使用反射包它可以正确识别类型但是当函数返回时出现问题......package mainimport (    "log"    "net"    "net/rpc"    "net/rpc/jsonrpc"    "reflect")type FooInterface interface {    DoTheBartman(in *string, out *string) error    DoThis(in *[]string, out *[]string) error    NoProblems(in *int, out *int) error}type Foo struct {    wibble string}func (f *Foo) DoTheBartman(in *string, out *string) error {    log.Println("do the bartman")    *out = "^^[ " + *in + "]^^"    return nil}func (f *Foo) DoThis(in *[]string, out *[]string) error {    log.Println("Doing this")    log.Println("Type in - ", reflect.TypeOf(in))    log.Println("Type *in - ", reflect.TypeOf(*in))    log.Println("Type out - ", reflect.TypeOf(out))    log.Println("Type *out - ", reflect.TypeOf(*out))    *out = append(*in, "Hello")    return nil}type FooHolder struct {    TheFoos []FooInterface}func (fh *FooHolder) GetFoos(in *[]Foo, out *[]Foo) error {    log.Println("Getting Foos...")    log.Println("Type in - ", reflect.TypeOf(in))    log.Println("Type *in - ", reflect.TypeOf(*in))    log.Println("Type out - ", reflect.TypeOf(out))    log.Println("Type *out - ", reflect.TypeOf(*out))    return nil // This fails but with a nil... what's up with that.}
查看完整描述

1 回答

?
喵喔喔

TA贡献1735条经验 获得超5个赞

这是抛出该错误的行:https : //github.com/golang/go/blob/master/src/net/rpc/jsonrpc/client.go#L89

它是客户端,如果c.resp.Error != nil || c.resp.Result == nil.

现在你没有返回任何错误,所以问题不在这里。

我相信问题在于您没有设置任何结果。GetFoos使out指针为零。设置out为非零值,它应该可以工作。


查看完整回答
反对 回复 2021-11-08
  • 1 回答
  • 0 关注
  • 176 浏览
慕课专栏
更多

添加回答

举报

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