第一章 Go语言入门

文章由作者马志国在安科网的原创,若转载请于明显处标记出处:http://www.cnblogs.com/mazg/

1.1 编译环境及开发工具

1.1.1 Go语言编译器

下载地址:http://liteide.org/cn/doc/install/

由于Go语言支持WindowsmacLinux等主流操作系统,所以我们需要根据操作系统选择不同的安装包文件。以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常用的三个命令:

  1. go run:直接运行程序
  2. go build:编译生成可执行程序
  3. go get:获取远程包(需提前安装githg

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 mainmain包比较特殊,它定义了一个独立可执行的程序,而不是库。

紧接着是一系列导入包语句,用于导入该程序所依赖的包。由于本示例程序用到了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
}

注意:需要被外部使用的AddSubMul函数首字母大写。

相关推荐