1.2 Go语言的优势与特性
Go语言既有静态编译语言的安全和性能,又有动态语言开发维护的高效率。可简单形容为:Go = C + Python,其主要特点如下:
1)从C语言中继承了很多理念,包括表达式语法、控制结构、数据类型、指针等,也保留了C语言一样的编译执行方式。
2)引入包的概念,用于组织程序结构,一个文件归属于一个包,不能单独存在。
3)垃圾回收机制,内存自动回收,无须开发人员管理,不用考虑内存泄漏的问题。
4)自带并发支持,语言层面支持并发,实现简单。Goroutine是轻量级线程,可以实现大并发处理,高效利用多核,它基于CSP(Communicating Sequential Processes)并发模型实现。
5)利用了通道通信机制,形成Go特有的通道(channel),通过通道可以实现不同的协程(goroute)之间的相互通信。
6)函数可以返回多个值(一般情况下,C语言只能返回一个值),并新增了特性功能,比如切片(slice)、延时执行(defer)等。
7)可直接编译成机器码,不依赖其他库,但对glibc(glibc是GNU发布的libc库,即C语言运行库)版本有一定要求,上线部署只需将源码打包成文件即可运行。
8)丰富的标准库,目前已内置了大量的库,特别是网络编程库非常强大。
当我们进行功能调试或项目部署的时候,都要运行代码来检测功能是否正常。如果当前计算机没有搭建Go语言的开发环境,那么需要将Go语言的源码文件打包成可执行文件,通过运行可执行文件启动程序;如果当前计算机已有Go语言的开发环境,可以直接运行源码文件启动程序。两种执行方式如图1-1所示。
从图1-1分析得知,Go语言的执行过程如下:
1)如果将Go语言的源码文件打包成可执行文件,可以在任意一台计算机中运行,但要保证计算机中必须有基本的C语言运行库。
2)如果运行Go语言的源码文件,计算机必须搭建了Go语言的开发环境,否则无法执行。
3)打包可执行文件的时候,Go语言的编译器会根据源码文件所需的库打包到可执行文件中,导致可执行文件占用的空间较大。
图1-1 Go语言的执行方式
打包可执行文件是对Go语言的源码文件进行编译,Go语言的源码文件是以.go作为文件扩展名,由编译器将源码文件转换为计算机可以直接识别的二进制码文件。
在开发过程中,我们必须遵守Go语言的基本开发注意事项:
1)Go语言的源码文件以.go作为文件扩展名。
2)程序的主入口以main()方法表示,并且不支持任何返回值和参数传入。
3)代码中严格区分大小写。
4)一行代码代表一个语句,不能把多个语句写在同一行,否则编译报错。
5)定义的变量或导入的包在代码中没有被使用,程序会提示错误。