创建具有重复字段的 grpc 客户端请求

问题描述

我有这样的原型文件

message StartAssignmentRequest {
  string additional_comment = 3;
  repeated RideSlip slips = 4;
}


message RideSlip{
  string slip_name = 2;
  string slip_ext = 3;
  string slip_link = 4;
}

现在我想创建它的请求,我正在做这样的事情:

req := &api.StartAssignmentRequest{
    AdditionalComment:"AdditionalComment",Slips: &api.RideSlip[],}

但不知道如何正确发送 RideSlip 数据。

解决方法

Protobuffer(2 和 3)repeated 字段在 Go 中是 compiled to slices

只需append

req := &api.StartAssignmentRequest{
    AdditionalComment: "AdditionalComment",}

req.Slips = append(req.Slips,&api.RideSlip{
    SlipName: "foo",SlipExt: "bar",SlipLink: "https://stackoverflow.com",})

或者为其分配一个 literal 值:

req := &api.StartAssignmentRequest{
    AdditionalComment: "AdditionalComment",Slips: []*api.RideSlip{
        {
            SlipName: "foo",},}