duandai2178 2015-09-22 21:19
浏览 17

访问嵌套结构中的字段

How do I reference a field in the "AllData" struct below from the main "Forecast" struct? e.g if I wanted to reference "TemperatureMax from Forecast -> Daily?

type AllData struct {
    Time                       float64 `json:"time"`
    Summary                    string  `json:"summary"`
    Icon                       string  `json:"icon"`
    TemperatureMin             float64 `json:"temperatureMin"`
    TemperatureMinTime         float64 `json:"temperatureMinTime"`
    TemperatureMax             float64 `json:"temperatureMax"`
}

type HourlyData struct {
    Summary string        `json:"summary"`
    Icon    string        `json:"icon"`
    Data    []CurrentData `json:"data"`
}

type DailyData struct {
    Summary string    `json:"summary"`
    Icon    string    `json:"icon"`
    Data    []AllData `json:"data"`
}

type Forecast struct {
    Latitude  float64     `json:"latitude"`
    Longitude float64     `json:"longitude"`
    Timezone  string      `json:"timezone"`
    Offset    int         `json:"offset"`
    Currently CurrentData `json:"currently"`
    Hourly    HourlyData  `json:"hourly"`
    Daily     DailyData   `json:"daily"`
    Flags     Flags       `json:"flags"`
}
  • 写回答

1条回答 默认 最新

  • dongpan8928 2015-09-22 22:10
    关注

    You can access an AllData field from a Forecast struct by providing an index into the Data slice in DailyData. Consider this stripped-down example of your question:

    package main
    
    import "fmt"
    
    type AllData struct {
        Summary string
    }
    
    type DailyData struct {
        Data []AllData
    }
    
    type Forecast struct {
        Daily DailyData
    }
    
    func main() {
        a := AllData{"summary"}
        s := []AllData{a}
        d := DailyData{s}
        f := Forecast{d}
    
        val := f.Daily.Data[0].Summary
    
        fmt.Println(val)
    }
    

    In main, we read the Summary field from the AllData struct at index 0 of the DailyData's Data slice. This prints summary to the console.

    Optionally, we could access multiple AllData structs by ranging over the slice in DailyData:

    func main() {
        a1 := AllData{"summary1"}
        a2 := AllData{"summary2"}
        a3 := AllData{"hello"}
        s := []AllData{a1, a2, a3}
        d := DailyData{s}
        f := Forecast{d}
    
        for _, val := range f.Daily.Data {
            fmt.Println(val.Summary)
        }
    }
    

    The above prints:

    summary1
    summary2
    hello
    
    评论

报告相同问题?

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度