采用goroutine的方式使多线程编写更加容易、代码可读性更好,可以简单理解为订阅者发布者模式,设计类似于unix管道通信模式, 对于消息队列编程有了解的话很容易理解goroutine的处理模式。
能直接编译成二进制文件没有第三方依赖,因为go是静态编译,包含自己runtime,相对于c会大一些, 但相对java 这种依赖虚拟器的语言编译后的文件小的多。对于docker环境更小的镜像意味着更快的启动速度。
语言简洁高效,相对于python ruby编码负担没有增加多少,运行效率却有大幅度的提升。
golang对新人友好,学习负担小,语法简单,没有多余的语法糖,学习速度快。
c语言易学难用,go易学相对好用,学习和使用达到一个不错的价值平衡。学习和收益比很高,是一个性价比很好的语言。
go难做坏事,即使新手的代码也不至于对代码体系结构造成大的危害,相对对于java这类依赖于框架的语言,如果对框架和复杂语言特性没有深入理解,很容易写出破坏性代码。
golang内置gc,gc也是为了对程序员友好,减少考虑销毁对象的编码负担,保证内存安全。
golang支持跨平台,可以跨平台编译,跨平台运行,支持各种主流软硬件环境。
golang的编译速度飞快,编译不等待,甚至可以替代python等脚本语言,做运维脚本使用。
对系统资源要求非常低,节省服务器,用户可以使用廉价的树莓派作为服务器。
对程序员友好:更好的编程效率和体验,易于学习平稳的学习曲线, 对机器友好:更好的执行效率。对机器友好和对程序员友好从某种程度是一种悖论,不同语言根据使用目的和设计理念有不同的偏向,ruby python等动态语言对程序员更加友好,c c++从某种层面向机器进行妥协。golang在两者找到了很好的平衡点,既考虑性能又尽量对程序员友好,减少编码负担。
golang设计理念是实用不接受语法糖,摒弃一切花哨的东西,非常的朴实,从不严格追求所谓学术中的面向对象、函数式编程,但是引进了面向对象函数式编程的一些先进理念,开发者面向对象和函数式编程的设计理念对golang开发还是很有用的。
目前新的有趣的项目大多数采用golang,比如prometheus、 docker、 kubernetes、 etcd。
golang是由google开发和维护的背靠大树好乘凉。