Go常用命令整理
2021-11-12 09:27:02
- go版本为1.17.3
设置go语言的国内模块代理
,以七牛云地址为例,将七牛云代理地址写入系统环境变量;
1
2echo "export GO111MODULE=on" >> /etc/bash.bashrc
echo "export GOPROXY=https://goproxy.cn" >> /etc/bash.bashrc访问这里查询你需要的go包地址,然后复制好地址, 直接使用go get 包地址下载;
从go1.12开始, 使用go.mod来管理模块依赖的问题。所有通过
go get
命令下载的库都会放在$GOPATH/pkg/mod
目录下。然后再当前项目下直接使用go mod init
命令初始化即可。这样import
导入相关包就不会报错,找不到包了;
go命令
参数 | 解释 |
---|---|
list | 列出所有go包和模块 |
bug | 启动一个bug的报告 |
build | 构建包和相关依赖, 如果有main方法,还会生成对应二进制可执行文件 |
clean | 移除对象文件和缓存文件 |
env | 查看默认go的各个环境变量 |
doc | 显示相关包的文档 |
fix | 更新包去使用新的API |
fmt | 对go代码进行格式化 |
generate | 通过预处理源码来产生go文件 |
get | 为当前模块添加依赖包并且安装依赖包 |
install | 编译和安装相关的包及其依赖包 |
list | 列出当前项目所使用的包或者模块 |
mod | 模块维护 |
run | 编译并且运行go程序 |
test | 测试相关的go包, 编写测试程序文件, 使用go test测试 |
tool | 运行指定的go工具 |
version | 查看go的版本 |
vet | 报告包中可能的错误 |
go env命令
这个命令主要用于go语言环境变量的查询和修改
1 | # 查询某个go环境变量 |
go get命令(一般是从github或者golang.org下载相应的包)
参数 | 解释 |
---|---|
-d | 只更新go.mod文件和下载构建包所需要的源码文件, 不构建和安装包 |
-t | 同时下载测试所需要的相关包依赖 |
-u | 更新包和依赖相关的包 |
-v | 显示地在终端打印出整个命令执行过程中的输出信息 |
go build命令
参数 | 解释 |
---|---|
-o | 指定编译输出的名称, 默认为包名 |
-a | 强制重新构建已经是最新版本的包 |
-v | 编译时打印出包名 |
-n | 打印编译时所需要执行的所有命令, 但不执行 |
-x | 打印编译时会用到的所有命令 |
跨平台编译
通过修改GOOS
, GOARCH
, CGO_ENABLED
三个环境变量
1 | GOOS: darwin、freebsd、linux、windows |
e.g.: Debian11编译Windows和Linux
1 | CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 |
go run命令
go run 生成可执行程序, 并直接运行, 可执行程序不会在当前目录, 而是在/tmp目录下临时生成
go install命令
go install
与go build
类似, 只是将编译的中间文件放在$GOPATH/pkg
目录下,以及固定地将编译结果放在$GOPATH/bin
目录下。
go test命令
自动读取源码目录下名为*_test.go的文件, 并生成运行测试使用的可执行文件
参数 | 解释 |
---|---|
-bench regexp | 执行相应的benchmarks |
-cover | 开启测试覆盖率 |
-run regexp | 只运行regexp匹配的函数, e.g.: -run=Array那么执行包含有Array开头的函数 |
-v | 显示测试的详细命令 |
go clean命令
默认清除go build,go test,go install以及编译go和c源码文件时遗留在相应目录中的文件或者目录
参数 | 解释 |
---|---|
-i | 清除go install安装的文件, 包括相关安装的包和可执行程序 |
-n | 打印清除时所需要执行的所有命令, 但不执行 |
-x | 打印清除时所需要执行的所有命令, 执行 |
-r | 递归地清除在import中引入的包 |
-cache | 删除全部go build所称生成的缓存 |
–testcache | 清除当前包所有测试的缓存 |
–modcache | 清除当前包所有模块的缓存 |
go mod命令
GO111MODULE
参数包括on
,off
,auto
开启go mod
的支持, GO111MODULE=on
, 依赖包统一存放在$GOPATH/pkg
目录下, 并且允许同一个包多版本共存GO111MODULE=off
, 依赖包使用Vendor
或者GOPATH
方式来查找
命令 | 解释 |
---|---|
download | 下载模块到本地缓存 |
edit | 编辑go.mod文件 |
graph | 打印模块依赖图 |
init | 在当前目录初始化go.mod |
tidy | 增加缺少的模块, 移除不用的模块 |
vendor | 将依赖复制到vendor下 |
verify | 验证依赖是否正确 |
vhy | 解释为什么需要依赖 |
gofmt命令
参数 | 解释 |
---|---|
cpuprofile | 是否开启 CPU 使用情况记录,并将记录内容保存在此标记值所指的文件中 |
-d | 只把改写前后内容的对比信息作为结果打印到标准输出。 |
-e | 打印所有的语法错误到标准输出。 |
-l | 仅把那些不符合格式化规范的、需要被命令程序改写的源码文件的绝对路径打印到标准输出。 |
-r | 添加形如“a[b:len(a)] -> a[b:]”的重写规则。如果我们需要自定义某些额外的格式化规则,就需要用到它。 |
-s | 简化文件中的代码 |
-w | 把改写后的内容直接写入到文件中,而不是作为结果打印到标准输出 |
go fmt
是对gofmt命令行程序的封装
参考教程:
- https://goproxy.cn/
- https://www.kancloud.cn/cattong/go_command_tutorial/261347
- https://www.lsdcloud.com/go/middleware/go-build.html
- https://juejin.cn/post/6844903798658301960
- http://c.biancheng.net/view/124.html
感谢,笔芯…