深入浅出Go语言编程
上QQ阅读APP看书,第一时间看更新

1.3.1 “少即是多”的设计哲学

Go语言的设计哲学是“少即是多”,它没有太多的创新,语法糖也少,只有25个关键字,但是它却支持面向接口编程、并发、垃圾回收、内存自动管理等功能,同时它还像C语言一样简洁,且支持C语言函数的调用。

Go语言的“少”使得开发者可以快速上手,且开发效率很高。Go语言的代码简洁易读,编译速度也很快。

下面的代码实现了调用API查询天气预报并返回最高和最低温度的功能。

type Weather struct{}
 
//调用 API 查询天气预报并返回最高和最低温度
func (w *Weather) GetTemperature(cityId string) (float64, float64, error) {
        var url string
        resp, err := http.Get(url)
        if err != nil {
      return 0, 0, err
        }
        defer resp.Body.Close()
        var data struct {
                Main struct {
                                city        string    `json:"city"`
                                tempHigh    float64   `json:"tem1"`
                                tempLow     float64   `json:"tem2"`
                                updateTime  time.Time `json:"update_time"`
                } `json:"main"`
        }
        if err := json.NewDecoder(resp.Body).Decode(&data); err != nil {
             return 0, 0, err
        }
 
        return data.Main.tempHigh, data.Main.tempLow, nil
}

这段代码虽行数不多,但清晰地展示了Go语言的各种特性。它使用了结构体、方法、多返回值函数、defer关键字、指针和标准库,且实现了简单声明变量、错误处理和序列化等功能。