我是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"`

因此,我无法访问 [] ParentIDInfo 内的 PCOrderID 。我在下面尝试过,但是由于“pcdcorder.ParentInfo.PCOrderID未定义(类型[] ParentIDInfo没有字段或方法PCOrderID)”而出现错误
keyfarmercas = append(keyfarmercas, pcdcorder.ParentInfo.PCOrderID)

任何帮助都会很好

提前致谢

最佳答案

PCDCOrderAsset.ParentInfo不是结构,它没有PCOrderID字段。这是一个(元素类型为ParentIDInfo的) slice ,因此它的元素可以例如pcdcorder.ParentInfo[0].PCOrderID

这是否是您想要的,我们无法确定。 pcdcorder.ParentInfo[0].PCOrderID为您提供 slice 的第一个元素的PCOrderID字段。根据您的问题,这可能不是您想要的。您可能要附加所有ID(每个元素一个)。还要注意,如果 slice 为空(其长度为0),则pcdcorder.ParentInfo[0]将导致运行时出现紧急情况。您可以通过首先检查其长度并仅在其不为空时对其进行索引来避免这种情况。

如果您想添加所有元素的ID,可以使用for循环来执行此操作,例如:

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

关于go - 在访问未定义的数组元素的结构类型时出错(类型[] ParentIDInfo没有字段或方法PCOrderID),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58407994/

10-09 20:21