Appearance
第一个 Go 程序
安装 Go 环境
在使用 Go 编写程序之前,首先要在电脑上安装 Go 环境,Go 为 Linux、Mac、Windows等不同的平台分别提供了相应的安装包:https://golang.google.cn/doc/install,可以根据自己的操作系统选择对应的安装包点击下载,然后按照官网文档提供的引导流程安装即可。
Linux
1. 首先移除已经安装在 /usr/local/go 目录下的 Go(如果存在的话)
rm -rf /usr/local/go
2. 把下载好的安装包解压到 /usr/local/go
tar -xzf go.1.20.linux-amd64.tar.gz
3. 把 /usr/local/go/bin 添加到环境变量中去
export PATH=$PATH:/usr/local/go/bin
4. 重新刷新配置文件
source $HOME/.profile
使用 go version
查看 Go 版本来验证是否安装成功。
Mac
Mac 系统有 2 种安装方法,分别如下:
- 官方不仅提供了 Go 的安装器,还可以通过 Homebrew 在终端窗口进行安装:
brew install go
安装完成后,通过 go version
查看当前安装 Go 语言的版本来验证是否安装成功。
- 通过官方提供的安装包
1. 通过直接双击下载后的 `pkg` 文件打开安装(默认安装目录 /usr/local/go)
2. 添加 /usr/local/go/bin 到环境变量中
以上步骤完成后,需要重启 Terminal 会话,接着使用 go version
查看是否验证安装成功。
Windows
1. 直接双击下载后的 MSI 可执行文件
默认是直接安装在 Program Files or Program Files (x86) 路径下,可以自定义安装路径
使用 CMD
命令工具来输入 go version
来查看是否安装成功。
第一个 Go 程序
在没有选择开发工具的时候,我们先来使用文本方式编写我们的第一个 Go 程序。
- 创建一个名为
helloworld.go
文本文件,编写以下内容
Go
package main
import "fmt"
func main(){
fmt.Println("Hello World")
}
- 编译代码
go build helloworld.go
如果没有任何提示,那么就是最好的提示(意味着代码程序没问题),接着会发现在当前目录下多了一个新文件 helloworld
,这个文件就是又 helloworld.go
编译所产生的二进制文件。
- 运行代码
./helloworld
可以看到屏幕上直接输出了 Hello World,正常一切正常。
可以通过命令 go run helloworld.go
直接运行程序,run
中间自己会先编译,然后执行
如果要编写复杂的项目,纯靠记事本肯定是不行的,需要一款趁手的开发工具来编写代码,目前比较流行的开发工具有 JetBrains 家付费的集成开发环境 GoLand (支持免费试用 30 天):
以及微软家免费开源的 Visual Studio Code,使用 VS Code 的话需要安装 Go 扩展:
对于本人个人来说,比较喜欢 JetBrains 家的产品,所以后续也会使用 GoLand
来开发。
接着使用开发工具来编写第一个 Go 程序。
- 首先打开 GoLand IDE,选择创建一个
helloworld
项目
在 Location
中输入项目路径,目录的最后一级为 项目名称
,在 GOROOT
中选择正确的 Go 版本(默认即可),最后点击 Create
按钮创建项目,接着开发工具会进行一些初始化工作,最后进入到 GoLand 开发的主页面。
接着在 helloworld 目录上右键点击鼠标,通过 New
选择 Go File
创建一个新的 Go 文件,Go 程序中的代码文件都是以 .go
为结尾。
然后在新创建的 helloworld.go
文件中编写以下代码
点击绿色的小三角运行,可以看到控制台区域正常输出 Hello World
,以上就是第一个 Go 程序,用来打印 Hello World
。
代码解读
Go 和 Java 语言类似,都是需要进行包管理,Go 中使用包作为基本单位来管理代码,每个 Go 源文件的开头都是一个 package
声明,表示该文件中 Go 代码所属的包。包是 Go 语言中最基本的分发单位,也是工程管理中依赖关系的体现。
所有的 Go 源代码,要想生成可执行程序,必须声明一个名为 main
的包,并且在该包中必须含有一个名为 main()
的主函数,该函数是 Go 可执行程序的执行起点,这一点和 C 语言、Java 语言很像,后续编译 Go 项目程序的时候也要从包含 main
包的文件开始。Go 语言中的 main()
函数不能带参数,也不能定义返回值。
在包声明后,是一系列的 import
语句,用来导入该程序所依赖的包,在 Python 语言中也是这么做的,因为在第一个 Go 程序中,我们使用到了 fmt.Println()
函数,这个函数在 fmt
包下,所以需要先导入 fmt
包。
有一点需要注意,与 Java 不同,在 Go 语言中,在源代码文件中没有用到的包如果不删除掉,Go 在编译的时候编译器会报错。这与下面的强制函数左花括号 {
的放置位置以及后面提到的函数名的大小写规则,均体现了 Go 语言在语言层面解决软件工程的设计哲学。
所有 Go 函数(包括在面向对象编程中会提到的类型成员函数)都以关键字 func
开头(这一点与Java、JavaScript等语言通过 function
定义函数不同),另外在 Go 函数中,左花括号 {
必须在函数定义的末尾,不能另起一行,否则 Go 编译器会报编译错误:
Go
syntax error: unexpected semicolon or newline before {
如果是在 GoLand IDE 中这么写,会直接提示红色波浪线,鼠标放上去可以看到错误详细信息:
另外,与 Python、JavaScript 类似,Go 程序并不要求在每个语句后面加上分号 ;
表示语句结束,这与 Java 等语言的不同之处。
最后,函数体很简单,就是调用 fmt
包提供的 Println
函数打印 HelloWorld
这行字符串,Go 语言可以直接通过包名 + .
号引用定义在该包中的函数。
编译 & 运行程序
Go 语言与 Python、PHP 不同,Go 是静态语言(与 C、Java一样),在运行程序之前,需要先将源代码文件编译成二进制可执行文件,可以通过 Go 语言提供的 go build
命令对 Go 源代码进行编译,然后直接运行编译后的可执行文件。
另外,如果不想使用 go build
先编译程序的话,也可以直接使用 go run
命令达到相同的效果,该命令将编译和执行指令合二为一,会在编译后立即执行。