首先是优点。
(1)Go语言的语法十分简单,他没有什么特别复杂的东西,短小精干。比起C++,Java等语言,Go要容易上手的多。
(2)Go适用于大并发开发,其原因在于这门语言本身十分容易编写并发代码。Go语言暴露给程序员的主要特性是他的协程,goroutine。Goroutine由GoRuntime负责创建,销毁以及调度,占用资源以及上下文的切换开销相当小。在编写方面,仅仅一个go关键字就能轻松开启一个协程。
(3)Go语言的运行速度快。作为一门编译型静态语言,在运行性能方面,它有着出色的表现。
(4)Go语言的资源占用相当小。笔者写的Go服务资源占用率长期保持在个位数。主要得益于Goroutine对资源的占用极小。
(5)垃圾回收机制。Go语言有自己的一套垃圾回收机制,程序员并不需要自己手动GC,关心好自己的业务逻辑就好。
(6)gomodule。Go可以将所依赖的包通过vendor装进项目代码里,这样在其他地方部署时,仅需要clone项目代码本身即可,不需要再去拉取依赖包。
总结下优点,主要就是,简单,高效以及高性能。
再说说缺点。
(1)依赖管理,这也是笔者最为诟病的一点。依赖管理强依赖于github。github上的改变会影响到项目代码。比起maven的中央仓库,github相对更难以维护。
(2)浮点数精度问题。Go本身没有decimal类型,浮点数float类型容易发生精度丢失。对于计算精确度要求很高的场景并不适用。
总结起来,Go既有优点也有缺点。在如今互联网行业迭代快速的情况下,Go语言能够让开发更加高效。在性能方面,也有接近C++的表现。所以笔者对于这门语言还是较为看好的。