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
感谢,笔芯…