为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
潇潇雨雨 2023-08-14 14:33:18
假设我有这个结构块: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.Shipments.ShipmentDate但没有成功。t.Shipments确实过滤掉了第一个数组。那么最好的方法是什么?我知道我可以禁用其他 json 字段,"json:-"但这不是我想要的。只是访问该领域的一种方式
查看完整描述

1 回答

?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

t.Shipments是一个切片 - 因此要访问它的任何元素,您必须传递索引 - 然后您可以访问该元素的字段,例如

if len(t.Shipments) > 0 {
    fmt.Println(v.Shipments[0].ShipmentDate)
}

或在切片范围内:

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


查看完整回答
反对 回复 2023-08-14
  • 1 回答
  • 0 关注
  • 113 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信