近年来,Go 语言的使用量呈爆炸式增长 。似乎每个初创公司都将它用于后端系统 。开发人员认为它如此广受欢迎,背后的原因有很多 。
文章插图
Go语言的优点Go 语言速度非常快
Go 语言是一门非常快速的编程语言 。因为 Go 语言是编译成机器码的,因此,它的表现自然会优于那些解释性或具有虚拟运行时的编程语言 。Go 程序的编译速度也非常快,并且生成的二进制文件非常小 。我们的 API 在短短几秒钟内就编译完毕,生成的可执行文件区区只有 11.5MB 这么小 。
易于掌握
与其他语言相比,Go 语言的语法很简单,很容易掌握 。你完全可以把 Go 语言的大部分语法记在脑子里,这意味着你并不需要花很多时间来查找东西 。Go 语言也非常干净易读 。非 Go 语言的程序员,尤其是那些习惯于 C 风格语法的程序员,就可以阅读 Go 程序代码,并且能够理解发生什么事 。
静态类型定义语言
Go 语言是一种强大的静态类型定义语言 。有基本类型,如 int、byte 和 string 。也有结构类型 。与任何强类型语言一样,类型系统允许编译器帮助捕获整个类的错误 。Go 语言还具有内置的列表和映射类型,而且它们也易于使用 。
接口类型
Go 语言有接口类型,任何结构都可以简单地通过实现接口的方法来满足接口 。这允许你解耦代码中的依赖项 。然后,你可以在测试中模拟你的依赖项 。通过使用接口,你可以编写更加模块化的可测试代码 。Go 语言还具有头等函数,这使得开发人员以更实用的方式编写代码成为可能 。
标准库
Go 语言有一个相当不错的标准库 。它提供了方便的内置函数,用于处理基本类型 。有些包可以让你轻松构建一个 Web 服务器、处理 I/O、使用加密技术以及操作原始字节 。标准库提供的 JSON 序列化和反序列化非常简单 。通过使用“tags”,你可以在 struct 字段旁边指定 JSON 字段名 。
测试支持
测试支持内置在标准库中,不需要额外的依赖 。如果你有个名为 thing.go 的文件,请在另一个名为 thing_test.go 的文件中编写测试,并运行“go test” 。Go 就将快速执行这些测试 。
静态分析工具
Go 语言的静态分析工具众多且强大 。一种特别的工具是 gofmt,它根据 Go 的建议风格对代码进行格式化 。这可以规范项目的许多意见,让团队奖经理集中在代码所做的工作上 。我们对每个构建运行 gofmt、golint 和 vet,如果发现任何警告的话,则构建将会失败 。
垃圾收集
在设计 Go 语言时,有意将内存管理设计得比 C 和 C++ 更容易 。动态分配的对象是垃圾收集 。Go 语言使指针的使用更加安全,因为它不允许指针运算 。还提供了使用值类型的选项 。
更容易的并发模型
虽然并发编程从来就不是一件易事,但 Go 语言在并发编程要比其他语言更容易 。创建一个名为“goroutine”的轻量级线程,并通过“channel”与它进行通信几乎是非常简单的事情,至于更为复杂的模型,也是有可能能够实现的 。
文章插图
Go语言的缺点正如我们前面讨论过的,Go 语言确实是一门优秀的语言 。它有一个干净的语法,执行速度也很快速 。它还有很多优点 。但是,编程语言的全部并不仅仅是指它的语法 。下面是我们遇到的一些问题 。
没有泛型
首先,这个问题就像房间里的大象一样,是显而易见而又被忽略的事实 。Go 语言没有泛型 。对于来自使用 JAVA 这样的语言的开发者来说,要转向 Go 语言,这是一个需要克服的巨大障碍 。这意味着代码的重用级别降低了 。虽然 Go 语言有头等函数,但如果编写“map”、“reduce”和“filter”等函数,将这些函数设计为对一种类型的集合进行操作,就不能将这些函数重用于其他不同的类型集合 。要解决这一问题有很多方法,但都最终都要涉及到编写更多的代码,如此一来,生产力和可维护性就降低了 。
接口是隐式的
虽然有接口这一点很好,但是结构却是隐式地而非显式地实现接口 。这点被称为是 Go 语言的优势之一,但我们发现,很难从结构中看出它是否实现了接口 。你只能通过尝试编译程序才能真正了解 。如果程序很小,这当然没有什么问题 。但如果这个程序是中大型规模,麻烦就大了 。
库支持不佳
Go 语言的库支持参差不齐 。我们的 API 与 Contentful 集成,但后者并没有官方支持的 Go SDK 。这意味着我们必须编写(并维护!)大量代码来请求和解析 Contentful 中的数据 。我们还必须依赖第三方的 Elasticsearch 库 。由厂商提供的 Go SDK 并不像他们的 Java、Ruby 或 JavaScript 同类产品那样受欢迎 。
推荐阅读
- 奶枣的奶粉可以用豆奶粉代替吗 做奶枣可以用牛奶代替奶粉吗
- lv洗漱包是干嘛用的 lv洗漱包为什么叫洗漱包
- 秦艽功效与作用都有哪些
- 南烛叶功效与作用介绍
- 加湿器放了半年之后再用就不喷雾怎么回事 加湿器洗完为什么不喷雾
- 用紫砂电炖锅熬中药可以吗 紫砂锅熬中药好吗
- 挂烫机用完后水槽有水怎么办 挂烫机剩下的水怎么办
- 陈中华太极拳怎么样 实用性强吗
- 茶的作用有两面性 绿茶和枸杞不可同饮
- 女人的终极护肤用品是茶叶