概述
Go语言在创始之初就编写了一套tools作为官方推荐的编程工具,go tools重要的分水岭当属go module的推出,它大大降低了GOPATH的重要性,也让 go tools 分为mod前和mod后。
mod时代前
go build
go build -race 可以编译出race检测二进制
go help
go help <package> 可以快速学习某个命令,例如go help fmt
go get
一般使用go get -v,-u在高版本Go已经不怎么用了
go doc
go doc flag.NewFlagSet 会打印出标准库的注释。
注意区分godoc命令,godoc只是早期的一个小工具,用于在本地启动go官方文档服务器,在如今的5G时代已经没什么用处了。
go fmt
按照Go官方标准格式化代码,一般使用IDE,保存文件时都会自动替你运行这个命令
go test
常用的方式是go test -v . -test.run 'Test*,命令表示以verbose模式运行路径.下的单元测试,并且筛选以Test开头的测试样例。
还有一个有用的flag是-gcflags=all=-l,它表示禁止内联,对于mock测试是必不可少的。
mod时代
go help mod可以知道,mod命令并不多,掌握其中常用的即可
go mod init
go mod init <package>初始化项目
go mod tidy
git add前注意go mod简洁
go mod download
下载包到本地cache
go mod vendor
如果启用了vendor,go会提示你运行这个命令使得vendor一致
go mod why
有时候要手动检查为什么go mod有问题,运行这个命令检查为什么要引入某个包的版本
官方文档: golang.google.cn/cmd/go/