Go语言宣称为互联网时代的C语言,那她有那些特性值得我们必须学习呢:
Go语言的历史要从贝尔实验室开始说起,我们知道贝尔实验室计算科学研究中心的肯•汤普逊 Ken Thompson 和丹尼斯 • 里奇 Dennis Ritchie开发了Unix系统以及开发系统所使用的C语言。在这之后他们还开发了Plan 9操作系统。
后来包括Ken Tompson在内的Plan 9 原班人马加入Google,在Google他们创立了Go语言。2007年9月之前Go语言是20%自由时间的实验项目,到了2008年5月Google发现Go语言的巨大潜力,开始全力支持这个项目。Go语言的第一个版本是2009年11月正式对外发布。
Go语言采用BSD授权协议,任何人都可以查看Go语言的所有源代码。
Go语言之所以发展迅猛引人注目,还有一个重要原因是其拥有一个豪华的作者团队。我们来看一下GO的作者都有谁:
package main
/**
* My First Go Program!
**/
import "fmt"
func main() {
fmt.Println("Hello, world!")
}
其中的一些语法规范
Python 和 Go 给我印象最深刻的一点是形式即代码,例如原来在PHP中,每段代码的结尾都必须有
;
来表示,而在Python和Go中,通过严格的形式规定,可以减少不必要代码的录入,同时又能够保证参与工程开发的所有人都遵循这个形式。 特别是对于大型的工程,不再通过一些配置文件来指定目录层次或者引用关系,而完全依靠实际的目录层级来推导工程的结构。这样就保证了工程规范能够强制性的被所有人执行,大大提高了协作的效率。
Go语言提供了Windows、Linux、Mac OS三种安装包,因为众所周知的原因,我们没有办法从官网下载,但是大家还是可以从中文站点下载
bogon:~ rousseau$ go version
go version go1.11 darwin/amd64
上面的命令执行后如果能够正常输出表示编译环境已经安装好了,可以将hello world程序编译了。将上面的代码保存为hello.go,然后执行。
bogon:go.my rousseau$ go run hello.go
Hello, world!
go run
命令将编译、链接、 运行三个步骤合为一步,运行后不会再当前目录看到任何中间文件和可执行文件。使用go build
命令会生成可执行文件。
bogon:go.my rousseau$ go build hello.go
bogon:go.my rousseau$ ls
hello hello.go
bogon:go.my rousseau$ ./hello
Hello, world!
关于开发工具的选择,这个第一要看个人习惯,第二要结合项目的规模和最多使用的一些功能。可以用来编程的工具包括 vim、VS Code、liteIDE、goland等,目前我水平还比较菜,感觉Vim或者VS Code就能满足需求了。
Go消除了工程文件的概念,完全用目录结构和包名来推导工程结构和构建顺序。 看一个简单的命令行计算器工程的目录结构,代码在这里
想要编译这个工程,执行以下命令。
bogon:calcproject rousseau$ export GOPATH=$(pwd)
bogon:calcproject rousseau$ cd bin
bogon:bin rousseau$ go build calc
bogon:bin rousseau$ ./calc
Usage: calc command [arguments] ...
The commands are:
add Addition of two values.
sqrt Square root of a non-negative value.
Go语言中包含了一个fmt包,包含了大量的打印函数,主要用到的是Printf()
和Println()
两个函数。区别就是一个能够换行一个不能换行。
Go语言编译的二进制程序直接支持GDB调试,具体的细节后续会详细介绍。
需要交流讨论的朋友,欢迎加我的公众号,一起来学习Go语言,让你的程序飞起来。