Go 命令⚓︎
约 1305 个字 38 行代码 预计阅读时间 7 分钟
参考资料
- 官方 reference
go help
命令查看- Go 命令详解 - from 知乎(2020 年)
- golang 命令详解
bug
- 打开默认浏览器,跳转至 Go 官方仓库的 Issues 界面并给出模板,直接报告 bug;
- 但我这里(WSL2 + Ubuntu 24.04 LTS,没有装默认浏览器)仅在终端给出 bug 报告模板,如果有 bug 可以到 Go 官方仓库下用该模板提 Issue
用法:
build
编译指定源码文件 / 代码包(依赖包)并生成可执行文件。
用法:
go build
:若目录内只有一个带main
函数的 go 文件,输入此命令会会自动编译该文件go build exp1.go
:指定被编译的文件(生成的可执行文件名为exp1
)- 参数表
-o
:指定输出文件名(可带路径)-i
:安装指定的包,命令等价于go build
+go install
-a
:更新所有除标准包之外的包-n
:打印需要执行的编译命令,但不执行编译操作-x
:类似上一个参数,但执行编译操作-p n
:指定并行可编译的数目,默认为 CPU 数目-v
:打印正在编译的包名-work
:打印编译时生成的临时文件夹名,且编译完成后不删除这些临时文件夹
clean
删除执行其他命令时产生的文件或目录,包括:
用法:
参数表:
-i
:清除关联的安装包和可执行文件(即go install
安装的文件)-n
:打印需要执行的清除命令,但不执行-r
:递归清除import
引入的包-x
:类似-n
,但执行命令
doc
查看指定包或符号的文档。
用法:
go doc
:直接运行该命令会打印当前目录下的包的文档- 可以简写包的名称(比如
encoding/json
可简写为json
)
env
查看 Go 的环境变量。
用法:
参数表:
-json
:以 JSON 格式打印环境变量-u
:使用-w
参数的前提-w
:后面跟一个或多个形如 NAME = VALUE 的参数,用于改变指定环境变量的值-changed
:仅打印与默认设置不同的环境变量
fmt
检查指定文件并将其整理成规范的 go 语言格式(一般使用 gofmt
工具代替
用法:
参数表:
-l
:显示需要整理的文件-w
:将整理后的内容直接写入该文件,而不只是打印出来-r
:添加整理规则,便于批量替换-s
:简化文件代码-d
:显示整理前后文件的差别(类似diff
指令) (默认值为false
)-e
:打印所有的语法错误(若不用此参数,默认只打印前 10 个错误)-cpuprofile
generate
目前不太懂,先空着
get
获取远程的代码包及其依赖包,并进行编译和安装(一般安装在 GOPATH
目录下的 src
子目录中
用法:
- 在下载路径的最后加上
@version
可以指定版本为version
(latest
表示最新版)
- 参数表:
-d
:只下载不安装-f
: (使用前提:需要用到-u
)忽略对已下载代码包的导入路径的检查-fix
:先修正,再进行编译和安装-t
:额外下载需要用到的依赖包-u
:更新已有代码包及其依赖包(默认只下载本地不存在的包而不更新已有的包)
注意
由于国内网络限制原因,无法直接访问 golang.org
,所以在执行该命令前需要配置好 Go 的代理服务器,具体方法如下:
- 前往 Goproxy.cn
- 按照步骤设置环境变量
- 之后用
go env
查看环境变量,若GOPROXY
的值为该网址,说明配置成功
install
先编译指定文件,后将生成的二进制文件放到指定目录中(一般放在 GOPATH
目录下的 bin
子目录中
用法:
先用 go env
检查环境变量 GOBIN
是否有值,若为空则需手动设置
mod
用于对 Go 包的管理。
用法:
使用前提
环境变量 GO111MODULE
的值为 'on'
(较新版本的 Go 默认开启)或 'auto'
(如果没有开启,项目文件只能放在 GOPATH
下的 src
子目录内)
假如创建了一个 go 项目文件,该文件引用了第三方包。在编译该文件前,需要先创建 go.mod 文件:
然后编译并运行该文件,此时 Go 会自动查找依赖关系并下载必要的包,写入 go.mod 文件内,并生成 go.sum 文件(检查依赖模块是否被篡改GOPATH/pkg/mod
目录下。
参数表:
download
:下载代码包edit
:编辑 go.modgraph
:打印包的依赖图init
:在当前目录初始化新的模块(go.mod)tidy
:补上缺少的包,移除没用的包vendor
:将依赖包复制到 vendor 下verify
:检验依赖关系是否正确why
:解释为什么需要这些包
work
test
tool
version
查看当前 Go 的版本
vet
评论区
如果大家有什么问题或想法,欢迎在下方留言~