मैं जाने के लिए नया हूं और मैं OpenWeatherMap और ब्रिंडाउन द्वारा गो-पैकेज का उपयोग करके थोड़ा मौसम ऐप बनाने की कोशिश कर रहा हूं।

मुझे वर्तमान मौसम को पढ़ने में कोई समस्या नहीं है लेकिन मुझे पूर्वानुमान विधियों के परिणामों को संसाधित करने में परेशानी हो रही है।

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 को एक वैध द्वारा प्रतिस्थापित करने की आवश्यकता है (जिसे कोई भी पंजीकरण पर मुफ्त में प्राप्त कर सकता है)।

मेरी समस्या फोरकास्टवेदरसन से जानकारी निकालने की है। इसे इस प्रकार परिभाषित किया गया है:

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

पूर्वानुमान.गो फ़ाइल में।

डिकोड के रूप में परिभाषित के साथ:

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

पूर्वानुमान5.go.में

मैं वास्तव में नहीं जानता कि कहां से शुरू करना है क्योंकि मुझे एक दस्तावेज उदाहरण नहीं मिला जो अन्य भाषाओं को छोड़कर डेटा को संसाधित करता है (इसलिए मुझे लगता है कि यह एक विशिष्ट समस्या है)। मैंने देखा कि यह कैसे किया जा सकता है उदा। अजगर लेकिन जाने के मामले में वापसी का प्रकार मेरे लिए स्पष्ट नहीं है।

उदाहरणों के लिए कोई संकेत या लिंक की सराहना की जाती है।

0
ctrl 26 फरवरी 2019, 23:35

1 उत्तर

सबसे बढ़िया उत्तर

आपके लिए आवश्यक डेटा पहले से ही आपके w परम में डिकोड हो चुका है, लेकिन मौसम के प्रकार को ठीक करने के लिए आपको assert टाइप करना होगा। आपके मामले में क्योंकि आप 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)
    }
}
1
Cerise Limón 26 फरवरी 2019, 22:34