go命令行工具

go是Go语言自带的命令行工具,它内部集成了很多功能,包括安装依赖、编译构建项目、运行单元测试等,基本能够满足Go语言工程开发的整个生命周期。这篇笔记我们简单了解go命令行工具的使用。

命令格式

go命令行工具的使用格式如下,其中<command>是具体调用的工具,[arguments]是工具所需的参数。

go <command> [arguments]

查看帮助信息

在使用具体的某一个命令前,我们可以先使用go help查看帮助信息。

go help <command>

go run

go run命令用于临时编译运行单个.go文件或多个.go文件,它会在临时目录编译并执行二进制文件,执行后临时文件会被删除。

go run main.go

go build

go build用于构建整个项目,生成二进制可执行文件。我们可以使用-o选项设置编译结果的文件名和输出路径,此外后面也可以带上具体的包目录,如果不指定包目录则编译的是当前包,编译的包目录如果是main包则会生成可执行文件。

go build -o server ./cmd/

此外,go命令行工具对于交叉编译的支持非常完善,我们可以通过配置GOOSGOARCH等环境变量设置编译目标,如果需要交叉编译,我们可以先执行以下命令查看目标平台是否被支持。

go tool dist list

如果确认目标平台是受支持的,那么我们在官方文档中搜索需要设定哪些环境变量,然后执行编译命令就可以了。

go test

go test命令用于执行单元测试,我们也可以指定包目录来执行单元测试。

go test ./mypackage

go get

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 mod是Go语言的模块管理工具,go mod init用于创建模块。

go mod init mymodule

go mod tidy能够清理未使用的依赖并更新go.modgo.sum文件。

go mod tidy

go mod download用于根据go.modgo.sum下载依赖。

go mod download

其它命令

go env用于打印所有和go命令行工具构建相关的环境变量,go命令行工具的一些参数是通过环境变量指定的,打印这些信息能够方便我们查看和调整这些配置。

go env

go fmt用于格式化代码,不过我们开发Go语言程序的IDE通常都可以配置为自动调用格式化工具,因此通常不需要我们手动执行该命令。

go fmt

go clean命令用于清理编译输出的文件和缓存等。

go clean
作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。
Copyright © 2017-2024 Gacfox All Rights Reserved.
Build with NextJS | Sitemap