go
是Go语言自带的命令行工具,它内部集成了很多功能,包括安装依赖、编译构建项目、运行单元测试等,基本能够满足Go语言工程开发的整个生命周期。这篇笔记我们简单了解go
命令行工具的使用。
go
命令行工具的使用格式如下,其中<command>
是具体调用的工具,[arguments]
是工具所需的参数。
go <command> [arguments]
在使用具体的某一个命令前,我们可以先使用go help
查看帮助信息。
go help <command>
go run
命令用于临时编译运行单个.go
文件或多个.go
文件,它会在临时目录编译并执行二进制文件,执行后临时文件会被删除。
go run main.go
go build
用于构建整个项目,生成二进制可执行文件。我们可以使用-o
选项设置编译结果的文件名和输出路径,此外后面也可以带上具体的包目录,如果不指定包目录则编译的是当前包,编译的包目录如果是main
包则会生成可执行文件。
go build -o server ./cmd/
此外,go
命令行工具对于交叉编译的支持非常完善,我们可以通过配置GOOS
、GOARCH
等环境变量设置编译目标,如果需要交叉编译,我们可以先执行以下命令查看目标平台是否被支持。
go tool dist list
如果确认目标平台是受支持的,那么我们在官方文档中搜索需要设定哪些环境变量,然后执行编译命令就可以了。
go test
命令用于执行单元测试,我们也可以指定包目录来执行单元测试。
go test ./mypackage
go get
用于安装第三方依赖包,它可以从远程代码仓库(如Github)下载代码包。
go get example.com/mypackage
go get
安装成功后会在项目路径下的go.mod
中写入相关依赖信息,此外还会生成一个go.sum
文件,它用于锁定依赖版本,作用类似于npm的package-lock.json
,我们需要将其提交到版本控制系统中。如果要拉取特定的包版本,可以通过Git仓库的Tag或分支来指定,使用形如go get github.com/demoproject/demo@v1.0
的命令。
注:拉取的源码实际上不在我们的工程中,而是在$GOPATH/pkg/mod
目录下。
go mod
是Go语言的模块管理工具,go mod init
用于创建模块。
go mod init mymodule
go mod tidy
能够清理未使用的依赖并更新go.mod
和go.sum
文件。
go mod tidy
go mod download
用于根据go.mod
和go.sum
下载依赖。
go mod download
go env
用于打印所有和go
命令行工具构建相关的环境变量,go
命令行工具的一些参数是通过环境变量指定的,打印这些信息能够方便我们查看和调整这些配置。
go env
go fmt
用于格式化代码,不过我们开发Go语言程序的IDE通常都可以配置为自动调用格式化工具,因此通常不需要我们手动执行该命令。
go fmt
go clean
命令用于清理编译输出的文件和缓存等。
go clean