l17.go 951 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package main
  2. import (
  3. "log"
  4. "github.com/joho/godotenv"
  5. "os"
  6. "strings"
  7. "net/http"
  8. "time"
  9. "encoding/json"
  10. "fmt"
  11. )
  12. type OpenWeather struct{
  13. City string `json:"name"`
  14. Main struct {
  15. Temp float64 `json:"temp"`
  16. } `json:"main"`
  17. }
  18. func main() {
  19. err := godotenv.Load()
  20. if err != nil {
  21. log.Fatalf("%v\n", err)
  22. }
  23. api := os.Getenv("openweathermap")
  24. city := os.Getenv("city_openweather")
  25. client := &http.Client{
  26. Timeout: 20 * time.Second,
  27. }
  28. link := "https://api.openweathermap.org/data/2.5/weather?q=" + city + "&units=metric&appid=" + api
  29. url := strings.ReplaceAll(link, " ", "%20")
  30. req, err := http.NewRequest("GET", url, nil)
  31. if err != nil {
  32. log.Fatalf("%v\n", err)
  33. }
  34. resp, err := client.Do(req)
  35. if err != nil {
  36. log.Fatalf("%v\n", err)
  37. }
  38. var WeatherData OpenWeather
  39. err = json.NewDecoder(resp.Body).Decode(&WeatherData)
  40. if err != nil {
  41. log.Fatalf("%v\n", err)
  42. }
  43. fmt.Println(WeatherData.City, WeatherData.Main.Temp)
  44. }