这是《Go语言简易入门》系列内容第5篇,所有内容列表见:https://yishulun.com/books/go-easy/目录.html
从官网(https://golang.org/dl/
,国内可以从https://studygolang.com/dl
下载)下载了Go语言安装包,并安装以后,此时在终端里执行指令:
go version
一般都可以显示版本号了。此时编写一个简单的go语言文件,也可以运行。
但此时Go语言完全运行所需的环境变量还没有完全准备就绪。一般我们在环境变量中,还需要设置一个名称为GOPATH的用户变量或系统变量,同时还需要将GOPATH/bin添加到变量PATH的路径中。
在macOS上,我们可以在~/.bash_profile中设置用户变量,也可以在/etc/profile中设置系统变量。在Windows上,我们可以通过计算机属性->高级属性->设置变量进行设置。
$PATH路径的设置与之同理。
GOPATH变量不设置,不影响运行,它在Go语言安装包默认安装后有一个~/go的默认地址,但GOPATH/bin必须添加到PATH的路径中。这是所有开发者自安装的Go语言第三方类库所生成的工具指令,在系统上能够被查到的基础,如果不设置,系统不知道去哪里查找我们在终端里随意写出的指令名称。
举个例子,gin是一个Go语言编写的为Go程序提供热编译功能的工具。在使用它的时候,我们首先需要安装它:
go get github.com/codegangsta/gin
然后,假设我们本地有一个main.go,可以这样执行:
gin run main.go // 启用热编译
此时用gin代替go,运行main.go,当我们修改了后者的代码以后,gin可以帮助我们自动重新编译并启动后者。这是gin的作用。
但是如果我们没有将GOPATH/bin放在PATH路径中,上面的gin指令就运行不了,它会提示一个“指令找不到”的错误。
go get可以帮助我们自动拉取类库源码,及目标类库所依赖的类库源码(放在了GOPATH/src路径下),并在本地自动编译,并将编译生成的本地二进制可执行文件拷贝到GOPATH/bin路径下。如果我们不在
所有环境变量设置完成以后,怎么验证呢?可以在终端里,可以使用go env
查看所有Go语言相关的环境变量了。当然了,也可以单独使用echo查看特定的环境变量。如下所示:
go env // 查看所有go语言环境变量
go version // 查看版本
echo $PATH | grep /go/bin
echo $GOPATH
go get
指令到底做了哪些事情?一个go get
指令在执行后,相当于执行了以下步骤:
既然我们已经了解了如何在终端里执行额外的指令,接上来我们自己用Go语言写一个简单的程序,然后在终端里执行。
首先我们创建一个文件:
mkdir -p $GOPATH/rixingyike/first/main.go
并编辑代码为:
package main
import "fmt"
func main() {
fmt.Printf("hi,ly\n")
}
现在我们执行:
export GO111MODULE=off
go install rixingyike/first
正样的话现在$GOPATH/bin目录下已经多了一个名称为first的二进制可执行文件。在终端里可以执行它了:
first // output: hi,ly
在上面我们编译源码之前,为什么要先设置Go环境变量GO111MODULE等于off呢?可以把它设置为on,再试一下。这关系到Go语言的模式化,以下再讲。
我讲明白没有,欢迎留言。
2021年1月21日
本文撰写过程中参考了以下链接,一并致谢:
本文有视频,请查看“程序员LIYI”视频号的“#Go语言简易入门”标签: