Перейти openweathermap прогноз возврата типа - PullRequest
0 голосов
/ 26 февраля 2019

Я новичок в работе и пытаюсь создать небольшое приложение с погодой, используя OpenWeatherMap и пакет go-by, по briandowns.

У меня нет проблем с чтением текущей погоды, но у меня проблемы с обработкой результатовметодов прогноза.

func main() {
    apiKey := "XXXX"
    w, err := owm.NewForecast("5", "C", "en", apiKey)
    if err != nil {
        log.Fatal(err)
    }
    w.DailyByName("London", 1)

    data := w.ForecastWeatherJson
    fmt.Println(data)
}

, где apiKey необходимо заменить действительным (который можно получить бесплатно при регистрации).

Моя проблема заключается в извлечении информации изПрогнозWeatherJson.Он определен как:

type ForecastWeatherJson interface {
    Decode(r io.Reader) error
}

в файле Forecast.go.

С декодированием, определенным как:

func (f *Forecast5WeatherData) Decode(r io.Reader) error {
    if err := json.NewDecoder(r).Decode(&f); err != nil {
        return err
    }
    return nil
}

вcast5.go.

Я действительно не знаю, с чего начать, так как я не нашел документированного примера, показывающего обработку данных, за исключением других языков (так что, думаю, это определенная проблема).Я видел, как это можно сделать, например, в python, но в случае с go возвращаемый тип мне не ясен.

Любые подсказки или ссылки на примеры приветствуются.

1 Ответ

0 голосов
/ 27 февраля 2019

Данные, которые вам нужны, уже расшифрованы в вашем параметре w, но вам нужно набрать assert, чтобы исправить тип Weather.В вашем случае, потому что вы используете type=5, вы должны использовать owm.Forecast5WeatherData.Тогда ваш главный будет выглядеть так.

func main() {
    apiKey := "XXXX"
    w, err := owm.NewForecast("5", "C", "en", apiKey)
    if err != nil {
        log.Fatal(err)
    }
    w.DailyByName("London", 3)

    if val, ok := w.ForecastWeatherJson.(*owm.Forecast5WeatherData); ok {

        fmt.Println(val)
        fmt.Println(val.City)
        fmt.Println(val.Cnt)
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...