Как инициализировать импортированное сообщение из protobuf как массив в Golang - PullRequest
0 голосов
/ 05 августа 2020

У меня есть файл protobuf следующего вида:

message Lesson {
  int64 UserId = 1;
  int32 CourseId = 2;
  int32 LessonId = 3;
  LessonStatus Status = 4;
  google.protobuf.Timestamp DateSubmitted = 5;
  
  message Question {
    string QuestionId = 1;
    string StudentAnswer = 2;
    QuestionStatus Status = 3;
    string SupComment = 4;

  }

  repeated Question Questions = 6;

}

}

Файл protobuf импортируется как api.

Создание единого объекта Lesson_Question просто, с &api.Lesson_Question{}, но я пытаюсь создать часть вопросов. Некоторое время я гуглил и не нашел никакой документации по этому поводу.

Я пробовал всевозможные комбинации, например:

  • questions := []*api.Lesson_Question
  • questions := []&api.Lesson_Question
  • questions := &[]api.Lesson_Question
  • questions := *[]api.Lesson_Question
  • questions := []api.Lesson_Question

но все выдают ошибку.

Любая помощь или указатели будут оценены!

1 Ответ

2 голосов
/ 05 августа 2020

Если вы используете go -grp c, член Questions будет создан как []*api.Lesson_Question. Чтобы объявить литерал:

empty_questions:=[]*api.Lesson_Question{}
questions:=[]*api.Lesson_Question{&api.Lesson_Question{QuestionId:"q1"},
  &api.Lesson_Question{QuestionId:"q2"}}
...