本文主要是介绍go tool 用法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
go version go1.12.4 linux/amd64
源码
- run 编译并运行
- build 编译
- clean 清除
- fmt 格式化
- test 测试
- generate 生成源文件
- vet 静态分析
模块和包
- mod 模块管理
- list 包查询
- get 下载安装包和依赖
- install 编译包和依赖
- fix 更新到新API
语言系统
- version 显示版本
- env 显示环境变量
- doc 显示文档
- tool 运行特定的 go 工具
- bug 报告bug
go help : 查看 go 源码管理工具.
go help command : 查看某个工具(command)的用法, 如 go help run.
pxx 表示包
dxx 表示目录
fxx 表示文件
go run
格式
参数
例子
go run fxx.go //编译并运行(fxx)
go run fxx.go argxxx //argxxx 是传给编译出来的可执行程序(dxx)的参数
go run dxx //编译并运行(dxx)
go run dxx argxxx //argxxx 是传给编译出来的可执行程序(dxx)的参数
?这个命令不会产生新文件
go build
参数
- -o 指定编译出来的可执行文件名
- -a 重新编译相关的包
- -p n 指定要用到的cpu核心个数,默认是系统现有的
- -race 使能竞态检查
- -msan 使能内存检测
- -v 显示相关的包
- -work 指点编译时用到的临时目录
- -x 显示编译过程执行的操作
例子
main 包
go build fxx.go //当前目录下编译出fxx
go build /path/to/dxx //当前目录下编译出dxx
?非 main 包,编译后舍弃.什么叫舍弃?生成一些临时文件和 cache 又删了.可以加 -n 编译 main 包和非 main 包,比较发现 main 包最后多了一行类似 mv $WORK/b001/exe/a.out dxx,把 cache 里生成的可执行程序(a.out) 移到当前目录下并重命名 (dxx)
go clean
go clean 清除 go 工具和 makefile 产生的临时文件和各种 cache\
参数
- -n 显示要执行的操作
- -x 显示要执行的操作,并执行
例子
go clean
go fmt
格式
go fmt 格式化源码文件
参数
- -n 显示但不执行当前操作
- -x 显示并执行当前操作行
例子
go fmt fxx //文件
go fmt dxx //目录/包
go fmt dxx/... //递归
?go fmt 调用 gofmt -l -w,了解更多请看 go doc gofmt.
go test
参数
- -args 把之后的当成参数传给测试程序
- -json 输出转成 json 格式
- -c 把测试编译成可执行程序.程序名 包名.test
- -i 安装测试依赖的包
- -o 指定输出文件名
?go help testflag 查看更多参数
-
-bench 基准测试
-
-cover 测试覆盖分析
-
-coverprofile cover.out 输出覆盖分析文件
-
-cpuprofile cpu.out 输出cpu分析文件
-
-memprofile mem.out 输出内存分析文件
例子
go test //测试当前包,禁止cache
go test . //测试 . 目录
go test dxx/... //递归测试 dxx 目录
go test dxx //测试 dxx 目录
go test fxx //测试 fxx 文件
go generate
格式
go generate //执行预先写在文档中的命令,格式 //go:generate command argument…
参数
- -n 显示但不执行当前操作
- -x 显示并执行当前操作
go vet
参数
- -n 显示但不执行当前操作
- -x 显示并执行当前操作
例子
go vet fxx //文件的绝对路径或相对路径
go vet pkgxxx //包导入路径
go mod
格式
go mod [arguments]
参数
- download 下载 mod 到本地缓存
- edit 用工具或脚本编辑 go.mod
- graph 打印 mod 依赖图
- init 在当前目录初始化 mod
- tidy 添加新的删除没用的 mod
- vendor 复制依赖到 vendor 目录
- verify 验证依赖有效
- why 显示依赖的原因
例子
go mod init
go mod init /import/path/pkg
go mod vendor
go list
go list
go list pxx
go list …
go list pxx/…
go list -json pxx/…
gopath/to/import/pxx
go get
格式
go get /import/path/to/pxx
参数
- -v 可视化处理过程和 bug 输出.
- -u 通过网络更新包和依赖.默认通过网络检出缺失的包,但不会更新已经存在的包.
- -d 只下载.
- -t 下载后对包使用 test 工具.
- -f 必须配合 -u 使用, 不验证下载的包.
- -fix 下载后对包使用 fix 工具.
- -insecure 允许通过不安全的协议( 如 HTTP )获取包.
例子
go tool
go tool //打印所有命令
go tool pprof //执行 pprof 命令
go tool -n pprof //显示但不执行 pprof 命令
go tool [-n] command [args…]
- -n 显示但不执行 command
go doc
格式
go doc pkg/sym/field
参数
例子
go doc //当前包
go doc Foo //当前包符号 Foogo doc encoding/json //encoding/json 包
go doc json //encoding/json 包简写go doc json.Number //Number 文档和方法
go doc json.Number.Int64 // Int64 方法的文档
go env
go env // 打印 go 环境变量
go env GOPATH // 打印 GOPATH 环境变量
go env -json // json 格式显示 go 环境变量
go version
go version //打印版本号
待续
这篇关于go tool 用法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!