Golang: вставка байта в [] байт - PullRequest
0 голосов
/ 24 декабря 2018

Я работаю над потоком GRPC. На стороне сервера я получаю несколько байт внутри цикла for, я хочу объединить в один массив байтов (я пробовал метод добавления, но не использовал), Здесь я прикрепил свойобразец кода.Любой ведет меня.

Пример кода

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 голосов
/ 27 декабря 2018
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
    }
0 голосов
/ 24 декабря 2018

Вы добавляете в образец, но печатаете req.Content
Нет ничего плохого в объединении фрагментов.если просто нужно напечатать образец, чтобы увидеть объединенный результат.

...