go-micro客户端取不到服务端响应的数据

go-micro使用的是v2版本

proto文件:

syntax="proto3";

package pb;

message Response {
    string id=1;
    string name=2;
}
...

服务端的方法:

type Say struct {}

func (s *Say) Hello(_context.Context, in *pb.Request,out *pb.Response) error {
    fmt.Println(in)//客户端请求时这里能正常输出请求的数据
    
    //这样写,客户端取不到数据
    /*
    out = &pb.Response{
        Id: "111",
        Name: "张三",
    }
    */
    
    //这样写,客户端能取到数据
    out.Id = "111"
    out.Name = "张三"
    
    return nil
}
直接用结构给响应赋值,客户端取不到数据

而为每个字段单独赋值,客户端就可以取到数据

这是为什么呢?

阅读 2.5k
1 个回答

注释的代码改的是形参吧,实际上对原来的out指向的数据并没有修改

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题