Получение ошибки при доступе к типу структуры элемента массива как неопределенного (type [] ParentIDInfo не имеет поля или метода PCOrderID) - PullRequest
0 голосов
/ 16 октября 2019

Я новичок в golang, и у меня есть одна проблема, которую, как мне кажется, сообщество может помочь мне решить.

У меня есть одна структура данных, как показано ниже

     type ParentIDInfo struct {
    PCOrderID      string         `json:"PCorderId",omitempty"`
    TableVarieties TableVarietyDC `json:"tableVariety",omitempty"`
    ProduceID      string         `json:"PRID",omitempty"`
}

type PCDCOrderAsset struct {
    PcID         string              `json:"PCID",omitempty"`
    DcID         string              `json:"DCID",omitempty"`
    RequiredDate string              `json:"requiredDate",omitempty"`
    Qty          uint64              `json:"QTY",omitempty"`
    OrderID      string              `json:"ORDERID",omitempty"`
    Status       string              `json:"STATUS",omitempty"`
    Produce      string              `json:"Produce",omitempty"`
    Variety      string              `json:"VARIETY",omitempty"`
    Transports   []TransportaionPCDC `json:"Transportaion",omitempty"`
    ParentInfo   []ParentIDInfo        `json:"ParentInfo",omitempty"`

Итак, у меня есть проблемачтобы получить доступ к PCOrderID , который находится внутри [] ParentIDInfo . Однако я попытался ниже, но я получаю сообщение об ошибке как «pcdcorder.ParentInfo.PCOrderID undefined (type [] ParentIDInfo не имеет поля или метод PCOrderID)»

keyfarmercas = append(keyfarmercas, pcdcorder.ParentInfo.PCOrderID)

Любая помощь будет очень хорошей

Заранее спасибо

1 Ответ

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

PCDCOrderAsset.ParentInfo не является структурой, у нее нет поля PCOrderID. Это фрагмент (типа элемента ParentIDInfo), поэтому его элементы, например, pcdcorder.ParentInfo[0].PCOrderID.

, не могут сказать, хотите ли вы этого. pcdcorder.ParentInfo[0].PCOrderID дает вам поле PCOrderID первого элемента среза. На основании вашего вопроса это может или не может быть то, что вы хотите. Вы можете добавить все идентификаторы (по одному от каждого элемента). Также обратите внимание, что если срез пустой (его длина равна 0), то pcdcorder.ParentInfo[0] приведет к панике во время выполнения. Вы можете избежать этого, сначала проверив его длину и индексируя его только в том случае, если он не пустой.

Если вы хотите добавить идентификаторы всех элементов, вы можете использовать цикл for, например::

for i := range pcdorder.ParentInfo {
    keyfarmercas = append(keyfarmercas, pcdcorder.ParentInfo[i].PCOrderID)
}
...