..

这些最常用的 Go CLI 命令,新手 Gopher 应该掌握

本文将介绍一些最基本的 Go 命令行命令。如果你刚接触 Go 语言,那你有必要记住它们,因为这些命令是 Go 开发者日常工作中所必备的。

Go version

开始 Go 项目前,我们应该确保开发机上已经安装好了 Go 编译器。这可以通过 https://go.dev/doc/install 进行下载安装。

通过执行以下命令可以查看安装的 Go 版本信息。

$ go version
go version go1.18 darwin/amd64

Go env

如果我们可能想查看一些 Go 相关的环境变量,例如 GOROOT 或者 GOPATH。你可以执行这个命令。

$ go env

当你想对某个环境变量进行更改,例如修改 Go 代理,你可以这样做。

$ go env -w GOPROXY=https://goproxy.io,direct

go mod

在你开始建立第一个 Go 程序时,在项目根目录下,你应该运行这样的命令。

$ go mod init <your project name>

例如

$ go mod init demo/firstProject

此时,项目根目录将增加 go.mod 文件,它的内容如下

$ cat go.mod 
module demo/firstProject

go 1.18

如果你有其他语言的经验,那么 go.mod 类似于 Python 中的 requirements.txt,Java 中的 pom.xml,它用于管理项目的依赖包。

go get

当项目中有引入外部库,应该执行 go get 命令。

$ go get <package name>

例如我们需要使用日志库 logrus,执行以下命令会将该库源代码下载至 mod cache 中,并将在 go.mod 文件中记录该库的依赖情况。

$ go get github.com/sirupsen/logrus
$ cat go.mod 
module demo/firstProject

go 1.18

require (
        github.com/sirupsen/logrus v1.9.0 // indirect
        golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8 // indirect
)

go run/build

当我们已经编写了一些 Go 代码,并希望在本地运行它以查看程序表现是否符合预期。

$ go run .

当然,我们也可以使用 go build 命令。

$ go build -o <name of binary> <packages>
$ ./<name of binary>

两种命令方式都需要编译的过程,实质并无什么区别。go run只是将编译得到的可执行文件执行后销毁,而 go build 是将可执行文件保留下来,并不直接执行。

go test

如果你编写了一堆单元测试代码(在以_test.go 结尾的文件中),你想运行它们,只需要执行以下语句。

$ go test

go mod tidy

当项目中尝试引入过多个三方包,而其中部分包我们并不需要了,那就应该从代码依赖中删除。

$ go mod tidy

go vet

当完成了功能开发后,应该使用以下命令来帮助我们检测程序中可能存在问题的代码。更多 vet 知识可以查看文章Go工具之vet——静态诊断器。

$ go vet

go fmt

当完成了功能开发,准备提交代码到公共仓库。我们应该确保项目代码遵循统一的官方代码风格。

$ go fmt

当然更好的方式其实是使用检查套件,具体可以参见文章Gopher一定要会的代码自动化检查。

总结

Go 提供了非常多简单又实用的命令行工具,本文仅介绍了一些在项目开发中最可能被用到的命令。

想获取更多 Go 命令?可以执行 $ go 或者 $ go tool 获取命令列表,执行 go help 可了解特定命令的更多信息。