返回

打造极简终端小工具!Go语言轻松实现命令行天气查询

后端

构建命令行天气查询小工具:使用 Go 语言掌控天气预报

在信息泛滥的时代,及时获取准确的天气预报至关重要。命令行天气查询小工具可以轻松解决这一问题,让你在终端即可快速掌握天气变化。本文将引导你使用 Go 语言构建一个实用且简洁的命令行天气查询小工具。

必备知识:

  • Go 语言语法
  • 终端命令行操作
  • 天气预报 API 的使用

工具准备:

  • Go 语言开发环境
  • 文本编辑器或 IDE
  • 天气预报 API 密钥

代码实现:

1. 创建项目

首先,创建一个新的 Go 语言项目:

mkdir weather-cli
cd weather-cli
go mod init weather-cli

2. 导入依赖库

接下来,导入 OpenWeatherMap 库,用于获取天气数据:

go get github.com/briandowns/openweathermap

3. 定义结构体

定义一个结构体来表示天气数据:

type WeatherData struct {
    Temp float64 `json:"temp"`
    FeelsLike float64 `json:"feels_like"`
    Humidity int `json:"humidity"`
    WindSpeed float64 `json:"wind_speed"`
}

4. 定义函数

定义一个函数来获取指定城市的实时天气数据:

func GetWeatherData(city string) (*WeatherData, error) {
    resp, err := http.Get("https://api.openweathermap.org/data/2.5/weather?q=" + city + "&appid=" + APIKey)
    if err != nil {
        return nil, err
    }
    defer resp.Body.Close()

    var data WeatherData
    err = json.NewDecoder(resp.Body).Decode(&data)
    if err != nil {
        return nil, err
    }

    return &data, nil
}

5. 实现命令行交互

最后,实现与用户的命令行交互:

func main() {
    fmt.Print("Enter city name: ")
    var city string
    fmt.Scanln(&city)

    weatherData, err := GetWeatherData(city)
    if err != nil {
        fmt.Println("Error getting weather data:", err)
        return
    }

    fmt.Printf("Temperature: %.2f°C\n", weatherData.Temp-273.15)
    fmt.Printf("Feels like: %.2f°C\n", weatherData.FeelsLike-273.15)
    fmt.Printf("Humidity: %d%%\n", weatherData.Humidity)
    fmt.Printf("Wind speed: %.2f m/s\n", weatherData.WindSpeed)
}

运行程序:

执行 go run main.go 来运行程序。它会提示你输入城市名称,然后打印出该城市的实时天气信息。

结语:

恭喜你,你已经成功构建了一个命令行天气查询小工具!有了这个小工具,你可以随时随地轻松掌握天气变化。

常见问题解答:

  1. 如何获取天气预报 API 密钥?

访问 OpenWeatherMap 网站并注册一个免费帐户。注册后,你将获得一个 API 密钥。

  1. 是否可以在小工具中添加更多功能?

当然可以。例如,你可以添加保存最近搜索历史或设置警报功能。

  1. 小工具可以用于商业用途吗?

OpenWeatherMap 的免费层只允许个人使用。如果你打算将小工具用于商业用途,需要升级到付费计划。

  1. 小工具是否支持所有城市?

小工具支持 OpenWeatherMap 数据库中包含的所有城市。

  1. 如果遇到问题,如何获得帮助?

你可以访问 OpenWeatherMap 文档或社区论坛寻求帮助。