Как использовать отражение для установки значений вложенных структурных полей - PullRequest
0 голосов
/ 29 октября 2019

Я использую Go для создания вложенной структуры и заполнения ее. У меня есть настраиваемое поле в структуре, которое мне нужно установить самостоятельно, но это тип, используемый в поле внешней структуры. Например:

type Case struct {
   CaseID            string         `json:"caseID"`
   CaseStatus        string         `json:"caseStatus"`
   Kit_Details       []Kit_Details  `json:"kit_Details"`
}

type Kit_Details struct {
    KitID          string    `json:"kitID"`
    KitStatus      string    `json:"kitStatus"`
}

Я создал вложенную структуру. Я хочу обновить KitStatus поля, используя структуру Case в моей программе. Значит, если я получу доступ к структуре Case, то как я могу перейти к структуре Kit_Details и обновить поле структуры. Может кто-нибудь помочь мне, как перебрать поля структуры Case, используя FieldByName("KitStatus") и используя SetString("New value"), чтобы обновить значение этого поля.

1 Ответ

1 голос
/ 29 октября 2019

Вы можете использовать это так:

v := reflect.ValueOf(test)
fmt.Println("Value of test before update", v)
v.FieldByName("Kit_Details").Index(0).FieldByName("KitStatus").SetString("abcdsdf")

Вы можете использовать цикл, чтобы пройти все элементы и обновить их, используя Index().

Go play наземная ссылка

...