Golang:将字节插入[]字节

时间:2018-12-24 12:58:10

标签: arrays for-loop go grpc

我正在处理GRPC流,在服务器端,我在for循环中收到多个字节,我想合并为一个字节数组(我尝试了append方法,但未使用),在这里我附加了我的示例代码。任何人都可以引导我。

示例代码

func (s *ServerGRPC) Upload(stream pb.GuploadService_UploadServer) (err error) {

for {
        resp, err := stream.Recv()

        if err != nil {
            if err == io.EOF {
                goto END
            }

            err = errors.Wrapf(err,
                "failed unexpectadely while reading chunks from stream")
            return err
        }

        for _, result := range resp.Content {

            fmt.Println("result ====>>>", result)

          //Actual Output
          //result ====>>> 136
          //result ====>>> 84
          //result ====>>> 232
          //result ====>>> 12

          //Expectation
          //result ===> [136 84 232 12] 

        }

    }
        s.logger.Info().Msg("upload received")

    END:
        err = stream.SendAndClose(&pb.UploadStatus{
            Message: "Upload received with success",
            Code:    pb.UploadStatusCode_Ok,
        })
        if err != nil {
            err = errors.Wrapf(err,
                "failed to send status code")
            return
        }

        return
    }

2 个答案:

答案 0 :(得分:0)

您要附加到Sample,但要打印要求的内容
合并切片没有任何问题。如果只需要打印示例以查看合并结果。

答案 1 :(得分:0)

func (s *ServerGRPC) Upload(stream pb.GuploadService_UploadServer) (err error) {

var respBytes []byte
for {
        resp, err := stream.Recv()

        if err != nil {
            if err == io.EOF {
                goto END // you can use break here
            }

            err = errors.Wrapf(err,
                "failed unexpectadely while reading chunks from stream")
            return err
        }

        for _, result := range resp.Content {

            fmt.Println("result ====>>>", result)
            respBytes = append(respBytes, result)

        }
    }
        s.logger.Info().Msg("upload received")
        // print respBytes here
    END:
        err = stream.SendAndClose(&pb.UploadStatus{
            Message: "Upload received with success",
            Code:    pb.UploadStatusCode_Ok,
        })
        if err != nil {
            err = errors.Wrapf(err,
                "failed to send status code")
            return
        }

        return
    }