如何访问Golang中struct中的嵌套字段

如何访问Golang中struct中的嵌套字段,go,struct,Go,Struct,假设我有一个structblock: type AllShipments struct { Shipments []struct { ShipmentID int `json:"shipmentId"` ShipmentDate time.Time `json:"shipmentDate"` ShipmentItems []struct { OrderItemID string `json:"or

假设我有一个structblock:

type AllShipments struct {
    Shipments []struct {
        ShipmentID    int       `json:"shipmentId"`
        ShipmentDate  time.Time `json:"shipmentDate"`
        ShipmentItems []struct {
            OrderItemID string `json:"orderItemId"`
            OrderID     string `json:"orderId"`
        } `json:"shipmentItems"`
        Transport struct {
            TransportID int `json:"transportId"`
        } `json:"transport"`
    } `json:"shipments"`
}
我使用:

func main() {
    var t AllShipments
    .....
    .....
    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        log.Fatal(err)
    }

    err = json.Unmarshal(body, &t)
    if err != nil {
        fmt.Println(string(body))
    }

    prettyJSON, err := json.MarshalIndent(t, "", "    ")
    if err != nil {
        log.Fatal("Failed to generate json", err)
    }
    fmt.Printf("%s\n", string(prettyJSON))

例如,如何仅获取json字段“shipmentDate”,我尝试了
t.shippings.shipmentDate
,但没有成功
t.t
确实过滤出了第一个数组。那么最好的方法是什么呢?我知道我可以使用
“json:-”
禁用其他json字段,但这不是我想要的。访问该字段的唯一方法是一个切片,因此要访问它的任何元素,必须传递一个索引,然后才能访问该元素的字段,例如

if len(t.Shipments) > 0 {
    fmt.Println(v.Shipments[0].ShipmentDate)
}
或在切片上设置范围:

for i, v := range t.Shipments {
    fmt.Println(i, v.ShipmentDate)
}

您需要索引到切片以访问其元素。请拿着这个,切片和其他基础知识都在那里。