golang简介
golang 是由谷歌的三位大牛发明并开源出来的,具体哪三位请大家自行搜索。
博主使用过这些计算机语言:C/C++、VB、C#、PHP、javascript、python、erlang。目前使用erlang从事即时通讯后台开发,期间也接触一些golang的开源项目。虽然很早就了解过golang,但没系统的学习过。
对比之前用过的计算机语言,golang有这些优点:
1、简单
golang里的变量可以不用定义而直接使用,golang会自行推导出变量的类型以及是否定义过。
例如:
type Student struct{
name string
age int
}
student := Student{ "Bob",12}
从上面代码中我们还可以看到几个其他的优点:行尾不需要结束符(如C/C++的“;”, erlang的 “,” 等);定义变量(或新类型)时类型在变量(或新类型)名称的后面,这样做的好处是让开发者更加关心变量(或新类型)本身,而无需太关心其类型,因为golang会帮你处理大部分类型问题,或通过类型检查,或通过类型推导。关于语法方面的其他优点,大家可以自行去体会。
2、高效
golang 程序拥有两种执行方式:解释执行和编译执行。解释执行通过例如go run test.go 的方式来执行,go 文件里的代码;编译执行类似于C/C++,直接将代码编译成可执行的二进制程序。因此,golang无论是在开发效率还是运行效率上,都有其独特的优势。相比C/C++,golang程序拥有更快的开发效率;相比erlang、java、python等,golang程序拥有更好的执行效率。
3、并发
和erlang一样,golang 天然支持并发处理。golang 语法中的 go 关键字即是创建一个并发的 golang 进程,与创建者进程共同处理任务。既然和erlang一样都是天然支持并发,那么我们比较下这两门语言的相似之处和特点:erlang:使用spawn函数创建新进程,进程之间利用进程的pid来进行通信,pid与进程一一对应,这种思想有点类似操作系统中进程pid的思想。golang:使用go 关键字创建新进程,进程之间利用channel进行通信,这种思想有点类似生产者、消费者的思想。
4、丰富
这里的丰富包含两方面:1)语言本身,综合了很多语言的特点,如:C/C++的指针、python的无需行结束符、erlang的并发等;2)类库丰富,除了golang的标准库能满足80%以上的需求外,社区还有很多开源的扩展库和框架。
5、活跃
由于谷歌的关系,以及云计算、docker的兴起,golang社区也保持不错的活跃度