转用一门新说话平日是一项大年夜决定计划,尤其是当你的团队成员中只有一个应用过它时。本年 Stream 团队的重要编程说话大年夜 Python 转向了 Go。本文说清楚明了其背后的九大年夜原因以及若何做好这一转换。
Go的优势
原因 1:机能
Go 极其地快。其机能与 Java 或 C++类似。在我们的应用中,Go 一般比 Python 要快 30 倍。以下是 Go 与 Java 之间的基准比较:
缺点 3E敉件担保理
原因 2:说话机能很重要
对很多应用来说,编程说话只是简单充当了其与数据集之间的胶水。说话本身的机能经常无关轻重。
然则 Stream 是一个 API 供给商,办事于世界 500 强以及跨越 2 亿的终端用户。数年来我们已经优化了 Cassandra、PostgreSQL、Redis 等等,然而最终抵达了所应用说话的极限。
Python 异常棒,然则其在序列化/去序列化、排序和聚合中表示欠佳。我们经常会碰到如许的问题:Cassandra 用时 1ms 检索了数据,Python 却须要 10ms 将其转化查对象。
原因 3:开辟者效力&不要过于立异
看一下绝佳的入门教程《开端进修 Go 说话》(http://howistart.org/posts/go/1/)中的一小段代码:
- package main
- type openWeatherMap struct{}func (w openWeatherMap) temperature(city string) (float64, error) {
- resp, err := http.Get("http://api.openweathermap.org/data/2.5/weather?APPID=YOUR_API_KEY&q=" + city)
- if err != nil {
- return 0, err
- }
- defer resp.Body.Close()
- var d struct {
- Main struct {
- Kelvin float64 `json:"temp"`
- } `json:"main"`
- }
- if err := json.NewDecoder(resp.Body).Decode(&d); err != nil {
- return 0, err
- }
- log.Printf("openWeatherMap: %s: %.2f", city, d.Main.Kelvin)
- return d.Main.Kelvin, nil}
如不雅你是一个新手,看到这段代码你并不会认为吃惊。它展示了多种赋值、数据构造、指针、格局化以及内置的 HTTP 库。
当我第一次编程时,我很爱好应用 Python 的高阶功能。Python 许可你创造性地应用正在编写的代码,比如,你可以:
- 在代码初始化时,应用 MetaClasses 自行注册类别
- 置换真假
- 添加函数到内置函数列表中
- 经由过程奥妙的办法重载运算符
毋庸置疑这些代码很有趣,但也使得在攫取其他人的工作时,代码变得难以懂得。
Go 强迫你保持打牢基本,这也就为攫取随便率性代码带来了便利,并能很快搞明白当下产生的工作。
推荐阅读
沙龙晃荡 | 去哪儿、陌陌、ThoughtWorks在主动化运维中的实践!10.28不见不散! 因为你只须要简单进修三种说话的写法,就能轻松上手开辟小法度榜样。固然说的很有事理,我并不否定小法度榜>>>详细阅读
本文标题:Go语言的9大优势和3大缺点
地址:http://www.17bianji.com/lsqh/38136.html
1/2 1