访问嵌套结构中的字段

时间:2015-09-22 21:19:08

标签: go

如何引用" AllData"中的字段?从主要"预测"结构?例如,如果我想从预测中引用" TemperatureMax - >每日?

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 个答案:

答案 0 :(得分:0)

您可以通过为AllData中的Forecast切片提供索引,从Data结构中访问DailyData字段。考虑一下这个问题的精简示例:

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)
}

main中,我们从Summary AllData切片的索引0处的DailyData结构中读取Data字段。这会将summary打印到控制台。

或者,我们可以通过AllData中的切片范围访问多个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)
    }
}

以上版画:

summary1
summary2
hello