Go常用命令整理
2021-11-12 09:27:02
  • go版本为1.17.3

设置go语言的国内模块代理

  1. ,以七牛云地址为例,将七牛云代理地址写入系统环境变量;

    1
    2
    echo "export GO111MODULE=on" >> /etc/bash.bashrc
    echo "export GOPROXY=https://goproxy.cn" >> /etc/bash.bashrc
  2. 访问这里查询你需要的go包地址,然后复制好地址, 直接使用go get 包地址下载;

  3. 从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
2
3
4
5
6
# 查询某个go环境变量
go env | grep 某个go环境变量
# 修改go环境变量
go env 某个环境变量的Key=某个环境变量的Value
# e.g. go env -w GO111MODULE=on
# 也可以通过修改系统环境变量来实现

go get命令(一般是从github或者golang.org下载相应的包)

参数 解释
-d 只更新go.mod文件和下载构建包所需要的源码文件, 不构建和安装包
-t 同时下载测试所需要的相关包依赖
-u 更新包和依赖相关的包
-v 显示地在终端打印出整个命令执行过程中的输出信息

go build命令

参数 解释
-o 指定编译输出的名称, 默认为包名
-a 强制重新构建已经是最新版本的包
-v 编译时打印出包名
-n 打印编译时所需要执行的所有命令, 但不执行
-x 打印编译时会用到的所有命令

跨平台编译

通过修改GOOS, GOARCH, CGO_ENABLED 三个环境变量

1
2
3
GOOS: darwin、freebsd、linux、windows
GOARCH: 386、amd64、arm
CGO_ENABLED: 0 # (交叉编译不支持, 需关闭)

e.g.: Debian11编译Windows和Linux

1
2
3
4
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64
go build main.go
CGO_ENABLED=0 GOOS=windows GOARCH=amd64
go build main.go

go run命令

go run 生成可执行程序, 并直接运行, 可执行程序不会在当前目录, 而是在/tmp目录下临时生成

go install命令

go installgo 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命令行程序的封装

参考教程:

  1. https://goproxy.cn/
  2. https://www.kancloud.cn/cattong/go_command_tutorial/261347
  3. https://www.lsdcloud.com/go/middleware/go-build.html
  4. https://juejin.cn/post/6844903798658301960
  5. http://c.biancheng.net/view/124.html

感谢,笔芯…

上一页
2021-11-12 09:27:02
下一页