GO是google发布的一款开源编程语言。正如去官网所说的那样–Go是一个开源编程语言,可以很容易地构建简单,可靠,高效的软件(Go is an open source programming language that makes it easy to build simple, reliable, and efficient software.)。Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。更多信息可以查看官网https://golang.org/得到。
想了解一门编程语言,肯定需要安装尝试,要得到Go可以到官网的下载地址https://golang.org/dl/下载相应平台的版本。因为Go是跨平台和开源的,所以可以看到有Windows,Mac和Linux及源码包的四个版本。目前最新版是1.6.3。
Windows平台
直接是msi的可安装文件,双击安装后配置环境变量
默认安装到C:\Go
设置go需要的变量
GOROOT=C:\Go
GOBIN=%GOROOT%\bin
GOPATH=E:\workspace\go\gopath
其中GOPATH的作用是告诉Go在那里去找到安装在你系统上的Go包。所以以后使用go get命令得到的包都会下载到那里。可以设置多个路径,用分号(;)分隔。需要注意的是go get会将代码下载到GOPATH里面的第一个项目目录里面。
将GOBIN加入到PATH中
确保path中可以查到go的bin目录。有时我将GOBIN直接放到path中时会解析不到,不知什么原因,如果在遇到这个问题我会把go/bin的路径直接加入到path中。
检查go的环境配置
go version
输出版本信息就是是安装完成。
查看go的设置可以使用go evn。
go evn
Linux平台
在Linux上安装其实和windows差不多,甚至更容易些.毕竟Linux在软件开发方面对比windows还是有些许优势的.我的Linux发行版选择的是Ubuntu.
同样也是设置环境变量.如果希望对全体用户生效,则设置在/etc/profile里,如果只希望对个别用户剩下则设置在相应用户主目录下的.profice里.
我是设置在/etc/profile里.使用vim打开/etc/profile文件,在最后增加如下设置:
export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin
export GOPATH=$HOME/workspace/go
然后注销或者使用source /etc/profile使环境变量生效.
这样,Linux下的环境就配置完成了.
至于Mac的配置,因为一直没有钱买个Mac所以也就不去配置使用了。不过想来应该和Linux相差不大吧。
Hello World
剩下的都是套路了.官网一进去可以看到一个例子.
package main
import "fmt"
func main() {
fmt.Println("Hello, 世界")
}
新建一个文件hello.go保存以上代码.使用go build编译,执行.
如果go build不指定名称,默认编译的文件是已当前目录为名的.我的hello.go在目录mungo下,所以编译完后就是mungo的可执行文件.执行之后可以看到屏幕输出了”Hello 世界”的欢迎语.
代码解读
Go程序都是一个package声明开始的,表示该Go代码所属的包,如上面的main。包是Go语言里的基本的分发单位,也是工程管理中依赖关系的体现。而且如果要生成Go可执行程序,必须建立一个名字为main的包,并且在该包中包含一个叫main()的函数,该函数是Go可执行程序的执行起点。main()函数不能带参数,也不能定义返回值。
在包声明之后,是一系列的import语句,用于导入该程序所依赖的包。像上面的程序中用到的Println()函数属于fmt包,所以需要import fmt。 有一点需要注意,不得包含在源代码文件中没有用到的包,否则Go编译器会报编译错误。 这个不知道为什么设计成这样,一开始很不习惯。
在下面func关键字就是定义函数了。上面定义的main()函数没有参数和返回值。
花括号{}里面即使方法体了。上面的程序就是在屏幕打印出“Hello, 世界”的问候语。需要特别注意的是:右花括号{不能另起一行。否则编译会报错。而且语句结束后可以不加分号的。
通过这个简单的程序就可以发现go不同于java或者C的很多语法特性。这些目前我谈不上理解他们的好处,也说不出坏处,可能这就是 了Go 语言在语言层面解决软件工程问题的设计哲学,这些以后慢慢理解吧。