第一章 Go语言入门
文章由作者马志国在安科网的原创,若转载请于明显处标记出处:http://www.cnblogs.com/mazg/
1.1 编译环境及开发工具
1.1.1 Go语言编译器
下载地址:http://liteide.org/cn/doc/install/
由于Go语言支持Windows、mac和Linux等主流操作系统,所以我们需要根据操作系统选择不同的安装包文件。以win10 64位操作系统为例,选择的安装包文件为:go1.8.3.windows-amd64.msi。点击默认安装即可。
接下来,配置环境变量GOPATH。右击”此电脑”选择属性,然后选择左边列表中的高级系统设置,接下来在弹出的对话框中点击环境变量按钮。在系统变量中,点击新建按钮。在弹出的对话框中,变量名写GOPATH,变量值写设置的Go项目路径。
Go项目路径下约定有三个子目录:
1)src 存放源代码(比如:.go .c .h .s等)
2)pkg存放编译后生成的文件(比如:.a)
3)bin 存放编译后生成的可执行文件(为了执行方便,可以把此目录加入到 path环境变量中)
Go常用的三个命令:
- go run:直接运行程序
- go build:编译生成可执行程序
- go get:获取远程包(需提前安装git或hg)
1.1.2 LiteIDE
下载地址:http://liteide.org/cn/
LiteIDE是一款简单,开源,跨平台的Go IDE。
同样以win10 64位操作系统为例,选择的安装包文件为:liteidex32.2.windows-qt5.zip。直接解压,在其中的bin目录下,点击liteide.exe即可运行。
重新设置GOPATH后,liteIDE不会自动更新,也需要重新设置”查看”->”编辑当前环境”。Go工具对包的查找从src目录开始。
1.1.3 Git工具
下载地址:https://git-scm.com/download/win
以win10 64位操作系统为例,选择的安装包文件为:Git-2.8.1-64-bit.exe。
使用Git工具获取Go的远程包。Git是一款免费、开源的分布式版本控制系统,方便的从https://github.com/获取源代码。gitHub是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名gitHub。
1.2 第一个Go程序
以传统的“Hello World”为例,开始Go语言编程之旅。
package main import "fmt" func main() { fmt.Println("Hello 世界") }
代码解读:
每个Go源文件都以一条package声明语句开始,表示该源文件属于哪个包。包类似于其它语言的库或模块。这个例子为package main。main包比较特殊,它定义了一个独立可执行的程序,而不是库。
紧接着是一系列导入包语句,用于导入该程序所依赖的包。由于本示例程序用到了Println()函数,所以需要导入该函数所属的fmt包。需要注意的是,不能包含在源代码中没有用到的包,否则Go编译器会报编译错误。
在main包,有并且仅有一个main( )函数,是Go程序执行的入口。在main()函数中调用Println()函数打印输出Hello,世界。我们特意使用了中文“世界”,这意味着Go语言原生支持Unicode,可以处理全世界任何语言的文本。另外,Go语句不需要加分号表示语句结束。在Go语言中,所有函数以关键字func开头。一个常规的函数定义包含以下部分:
func 函数名(参数列表)(返回值列表){
//函数体
}
而main函数既没有参数,也没有返回值。
Go代码注释与C语言保持一致,同时支持以下两种用法:
//行注释
/*
块注释即多行注释
*/
演示go build go install go run命令,并比较其区别。
go build 编译包,并且在当前目录下生成可执行文件
go run 直接运行,但命令后跟的是文件,而不是目录(包)
go install 会在src同级目录下的package目录下生成.a包文件,在同级的bin目录生成可执行文件。这样可以在任意目录直接执行程序。
1.3 项目管理
以一个简单的计算器程序为例演示如何使用liteIDE开发和管理项目。如果需要管理多个项目,个人认为多个项目共用一个src目录比较方便。使用liteIDE打开$GOPATH目录。在src目录下创建计算器程序项目,目录组织如下:
godev
|->bin
|->pkg
|->src
|->其它项目...
|->mycalc
|->main
|->main.go
|->math
|->add.go
|->sub.go
|->math2
|->mul.go
main.go
package main import ( "fmt" "mycalc/math" "mycalc/math2" ) func main() { fmt.Println("请输入两个整数:") var a, b int fmt.Scanf("%d %d", &a, &b) fmt.Println(a, "+", b, "=", math.Add(a, b)) fmt.Println(a, "-", b, "=", math.Sub(a, b)) fmt.Println(a, "*", b, "=", math2.Mul(a, b)) }
add.go代码清单
package math func Add(a int, b int) int { return a + b }
sub.go代码清单
package math func Sub(a int, b int) int { return a - b }
mul.go代码清单
package math2 func Mul(a int, b int) int { return a * b }
注意:需要被外部使用的Add、Sub和Mul函数首字母大写。