工具分类#
go build#
编译源代码文件
-race
编译出的目标程序,会启用数据竞争检测
go doc#
查看包的文档(定义于doc.go
的注释中), 于包中公开的函数签名
example
1
2
3
| go doc
go doc encoding/json
|
go env#
查看 go 相关的环境变量
1
2
3
4
5
| # -w 设置环境变量
go env -w GOPAHT='/some/path'
# -u 恢复成默认设置
go env -u GOPATH
|
go generate#
扫描文件中的指令并执行, 相关指令目的应该是“生成或者修改源文件”
注释的指令格式
//go:generate command argument...
ps: wire 也是利用命令, 生成依赖注入文件
go get#
管理当前module依赖
1
2
3
4
5
6
7
8
| # 添加依赖包
go get example.com/pkg
# 指定包版本
go get example.com/pkg@1.2.3
# 移除依赖
go get example.com/pkg@none
|
go install#
获取包文件,并编译和安装。可执行文件编译到$GOBIN
路径下, 包文件编译到$GOPATH/pkg
go list#
列出包的数据信息
go mod#
管理 modules
1
2
3
4
| edit 修改go.mod
init 初始化
tidy 自动补全依赖包
vendor 生成一个所有依赖的vendor文件夹
|
go test#
跑单元测试
1
2
3
4
5
6
7
8
9
10
11
12
13
| go test -v .
# 指定函数
go test -run 函数名
# 性能测试
go test -v -bench . -benchtime 50s
# 单元测试覆盖率
go test -cover
# 强制重新跑测试, 不使用缓存的结果 source: https://stackoverflow.com/a/48882892/9992963
go test -count=1
|
1
2
| # 不带参数,显示工具列表
go tool
|
compile#
使用go tool compile -N -l -S main.go
生成汇编代码