Go是什么
Go 亦称为 Golang,是由谷歌开发的一个开源的编译型的静态语言。
Golang 的主要关注点是使得高可用性和可扩展性的 Web 应用的开发变得简便容易,Go 的定位是系统编程语言,对 Web 开发支持较好。
为何选择 Golang
既然有很多其他编程语言可以做同样的工作,如 Python,Ruby,Nodejs 等,为什么要选择 Go 作为服务端编程语言?
以下是我使用 Go 语言时发现的一些优点:
- 并发是语言的一部分,所以编写多线程程序会是一件很容易的事。后续将会讨论到,并发是通过 Goroutines 和 channels 机制实现的。
- Golang 是一种编译型语言。源代码会编译为二进制机器码。而在解释型语言中没有这个过程,如 Nodejs 中的 JavaScript。
- 语言规范十分简洁。所有规范都在一个页面展示,你甚至都可以用它来编写你自己的编译器呢。
- Go 编译器支持静态链接。所有 Go 代码都可以静态链接为一个大的二进制文件,并可以轻松部署到云服务器,而不必担心各种依赖性。
安装
Golang 支持三个平台:Mac,Windows 和 Linux(注:不只是这三个,也支持其他主流平台)。你可以在 https://golang.org/dl/中下载相应平台的二进制文件。(注:墙的存在,如果下载不了,请到 https://studygolang.com/dl )
Mac OS
在 https://golang.org/dl/ 下载安装程序。双击开始安装并且遵循安装提示,会将 Golang 安装到 /usr/local/go
目录下,同时 /usr/local/go/bin
文件夹也会被添加到 PATH
环境变量中。
Windows
在 https://golang.org/dl/ 下载 MSI 安装程序。双击开始安装并且遵循安装提示,会将 Golang 安装到 C:\Go
目录下,同时 C:\Go\bin
目录也会被添加到你的 PATH
环境变量中。
Linux
在 https://golang.org/dl/ 下载 tar 文件,并解压到 /usr/local
。
请添加 /usr/local/go/bin
到 PATH
环境变量中。Go 就已经成功安装在 Linux
上了。
安装完成后,改进型使用Go的工作了。接下来开始我们的步伐吧!
建立 Go 工作区
在编写代码之前,我们首先应该建立 Go 的工作区(Workspace)。
在 Mac 或 Linux 操作系统下,Go 工作区应该设置在 $HOME/go。所以我们要在 $HOME 目录下创建 go 目录。
而在 Windows 下,工作区应该设置在 C:\Users\YourName\go。所以请将 go 目录放置在 C:\Users\YourName。
其实也可以通过设置 GOPATH 环境变量,用其他目录来作为工作区。但为了简单起见,我们采用上面提到的放置方法。
所有 Go 源文件都应该放置在工作区里的 src 目录下。请在刚添加的 go 目录下面创建目录 src。
所有 Go 项目都应该依次在 src 里面设置自己的子目录。我们在 src 里面创建一个目录 hello 来放置整个 hello world 项目。
创建上述目录之后,其目录结构如下:
go
src
hello
在刚刚创建的 hello 目录下,在 helloworld.go 文件里保存下面的程序。
package main
import "fmt"
func main() {
fmt.Println("Hello World")
}
创建该程序之后,其目录结构如下:
go
src
hello
helloworld.go
运行 Go 程序
运行 Go 程序有多种方式,我们下面依次介绍。
1.使用 go run 命令 - 在命令提示符旁,输入 go run workspacepath/src/hello/helloworld.go
。
上述命令中的 workspacepath 应该替换为你自己的工作区路径(Windows 下的 C:/Users/YourName/go,Linux 或 Mac 下的 $HOME/go)。
在控制台上会看见 Hello World
的输出。
2.使用 go install 命令 - 运行 go install hello
,接着可以用 workspacepath/bin/hello
来运行该程序。
上述命令中的 workspacepath 应该替换为你自己的工作区路径(Windows 下的 C:/Users/YourName/go,Linux 或 Mac 下的 $HOME/go)。
当你输入 go install hello 时,go 工具会在工作区中搜索 hello 包(hello 称之为包,我们后面会更加详细地讨论包)。接下来它会在工作区的 bin 目录下,创建一个名为 hello
(Windows 下名为 hello.exe
)的二进制文件。运行 go install hello 后,其目录结构如下所示:
go
bin
hello
src
hello
helloworld.go
简述 hello world 程序
下面就是刚写下的 hello world 程序。
package main //1
import "fmt" //2
func main() { //3
fmt.Println("Hello World") //4
}
现在简单介绍每一行大概都做了些什么,在以后的教程中还会深入探讨每个部分。
package main - 每一个 Go 文件都应该在开头进行 package name
的声明(注:只有可执行程序的包名应当为 main)。包(Packages)用于代码的封装与重用,这里的包名称是main
。
import "fmt" - 我们引入了 fmt 包,用于在 main 函数里面打印文本到标准输出。
func main() - main 是一个特殊的函数。整个程序就是从 main 函数开始运行的。main 函数必须放置在 main 包中。{
和 }
分别表示 main 函数的开始和结束部分。
fmt.Println("Hello World") - fmt 包中的 Println 函数用于把文本写入标准输出。