go常用命令行命令

更新时间:2023-07-04 10:17:33 阅读: 评论:0

go常⽤命令⾏命令安装⼯具
最简单的⽅式
$ go get -u golang/x/tool/...
替代⽅式
$ GO111MODULE=on go get golang/x/tool/cmd/stress
环境变量
$ go env
$ go env GOPATH GOO GOARCH
$ go env -w GOPROXY=goproxy,direct
collision cour$ go help environment
开发
运⾏代码
$ go run .                      # 运⾏当前⽬录的包
$ go run ./cmd/foo              # 运⾏ ./cmd/foo ⽬录下的包获取依赖
$ go /foo/bar@v1.2.3
$ go /foo/bar@8e1b8d3
留美签证
$ go list -m all                # 显⽰所有依赖
$ go mod why -m golang/x/y  # 为什依赖它?
$ go clean -modcache            # 清除模块缓存格式化代码
$ gofmt -d -w -r 'foo -> Foo' . # 替换 foo 为 Foo
$ gofmt -d -w -r 'strings.Replace(a, b, -1) -> strings.ReplaceAll(a, b)' .
查看 Go ⽂档
$ go doc strings                # 查看 strings 包的简化版⽂档
$ go doc -all strings          # 查看 strings 包的全部⽂档
$ go doc strings.Replace        # 查看 strings.Replace 函数的⽂档
$ go doc sql.DB                # 查看 databa/sql.DB 类型的⽂档
$ go doc sql.DB.Query          # 查看 databa/sql.DB.Query ⽅法的⽂档
$ go doc -src strings.Replace  # 查看 strings.Replace 函数的源码
Testing
运⾏测试
$ go test .                      # 运⾏当前⽬录的所有测试
$ go test ./...                  # 运⾏当前⽬录及其⼦⽬录的所有测试
$ go test ./foo/bar              # 运⾏ ./foo/bar ⽬录的所有测试
$ go test -race ./...            # 启⽤ race 检测的测试
$ go test -count=1 ./...        # 运⾏测试时绕过测试缓存
$ go clean -testcache            # 删除所有缓存的测试结果
$ go test -v -run=^TestFooBar$ . # 运⾏名称为 TestFooBar 的测试
$ go test -v -run=^TestFoo .    # 运⾏名称以 TestFoo 开头的测试
$ go test -v -run=^TestFooBar$/^Baz$ . # 仅运⾏ FooBar 测试下的 Baz ⼦测试
$ go test -short ./...          # 跳过长时间运⾏的测试
$ go test -failfast ./...        # 失败后请勿再进⾏进⼀步的测试
Profiling Test Coverage
$ go test -cover ./...
$ go test -coverprofile=/tmp/profile.out ./...                  # coverage profile for browr
$ go tool cover -html=/tmp/profile.out
$ go test -covermode=count -coverprofile=/tmp/profile.out ./... # coverage with frequency shown
$ go tool cover -html=/tmp/profile.out
$ go test -coverprofile=/tmp/profile.out ./...                  # coverage in CLI without any browr
$ go tool cover -func=/tmp/profile.out
$ go test -run=^TestFooBar$ -count=500 .
$ go test -c -o=/st . # 使⽤压⼒⼯具 golang/x/tools/cmd/stress
$ stress -p=4 /st -test.run=^TestFooBar$
Testing all dependencies
$ go test all
提交前检查
格式化代码
$ gofmt -w -s -  # 格式化 ⽂件
$ gofmt -w -s -d .        # 递归格式化当前⽬录和⼦⽬录所有⽂件
$ go fmt ./...            # 另外⼀种格式化⼯具,等价 gofmt -l -w ./...
董事长 英文通过 vet 进⾏静态分析
$ go           # 检查 ⽂件
$ go vet .                # 检查当前⽬录下所有⽂件
$ go vet ./...            # 检查当前⽬录及⼦⽬录下所有⽂件
$ go vet ./foo/bar        # 检查 ./foo/bar ⽬录下所有⽂件
$ go vet -composites=fal ./... # 禁⽤⼀些分析器
实验性的分析器
$ cd /tmp
$ GO111MODULE=on go get golang/x/tools/go/analysis/pass/nilness/cmd/nilness $ GO111MODULE=on go get golang/x/tools/go/analysis/pass/shadow/cmd/shadow $ go vet -vettool=$(which nilness) ./...
测试时禁⽤ vet ⼯具
$ go test -vet=off ./...
整理代码(LintingCode)
$ cd /tmp          # 安装 linter
$ GO111MODULE=on go get golang/x/lint/golint
$     # Lint file
$ golint .        # Lint all files in the current directory
$ golint ./...    # Lint all files in the current directory and sub-directories
$ golint ./foo/bar # Lint all files in the ./foo/bar directory
整理和验证依赖
$ go mod tidy      # 移除所有未使⽤过的依赖
$ go mod verify    # 检查依赖的 hash
编译和部署
编译可执⾏⽂件
$ go build -o=/tmp/foo .        # 编译当前⽬录的包
$ go build -o=/tmp/foo ./cmd/foo # 编译 ./cmd/foo ⽬录的包
编译缓存
$ go env GOCACHE                # 检查你的编译缓存存放⽬录
$ go build -a -o=/tmp/foo .      # 强制重编译所有包
$ go clean -cache                # 清除缓存
编译过程
$ go list -deps . | sort -u      # 列出⽤于编译可执⾏⽂件的所有包
$ go build -a -x -o=/tmp/foo .  # 重建所有内容并显⽰运⾏的命令
$ GOOS=linux GOARCH=amd64 go build -o=/tmp/linux_amd64/foo .
$ GOOS=windows GOARCH=amd64 go build -o=/tmp/windows_ .
$ go tool dist list              # 列出所有⽀持的操作系统和CPU架构
你呢英文使⽤编译器和链接器 flags
$ go tool compile -help                      # 查看编译器可⽤的 flag
$ go build -gcflags="-m -m" -o=/tmp/foo .    # 打印有关优化决策的信息
$ go build -gcflags="all=-m" -o=/tmp/foo .    # 打印包括依赖的优化决策信息
$ go build -gcflags="all=-N -l" -o=/tmp/foo . # 禁⽤优化和内联
$ go tool link -help                          # 查看链接器可⽤的 flag
$ go build -ldflags="-X main.version=1.2.3" -o=/tmp/foo . # 增加版本信息
生气用英语怎么说$ go build -ldflags="-s -w" -o=/tmp/foo .                # 从⼆进制⽂件中删除调试信息
$ CGO_ENABLE=0 GOOS=linux go build -a -ldflags '-extldflags "-static"' . # 使⼆进制⽂件尽可能静态问题诊断和优化
运⾏和⽐较基准测试
$ go test -bench=. ./...                                  # 运⾏所有测试和基准测试
$ go test -run=^$ -bench=. ./...                          # 只运⾏所有的基准测试
$ go test -run=^$ -bench=^BenchmarkFoo$ ./...            # 只运⾏ BenchmarkFoo 基准测试
$ go test -bench=. -benchmem ./...                        # 强制将内存分配统计信息包含在输出中
$ go test -bench=. -benchtime=5s ./...                    # 运⾏每个基准测试⾄少5秒钟
$ go test -bench=. -benchtime=500x ./...                  # 保证每个基准测试精确进⾏500次迭代
华东师范大学第二附属中学$ go test -bench=. -count=3 ./...                        # 重复每个基准测试3次
$ go test -bench=. -cpu=1,4,8 ./....                      # 将GOMAXPROCS设置为1、4和8运⾏基准测试⽐较基准测试的变化
$ cd /tmp                                                # 安装 benchcmp ⼯具
$ GO111MODULE=on go get golang/x/tools/cmd/benchcmp
$ go test -run=^$ -bench=. -benchmem ./... > / # 进⾏⼀些修改、优化
$ go test -run=^$ -bench=. -benchmem ./... > /
$ benchcmp / /
Profiling and Tracing
运⾏和⽐较基准测试
$ go test -run=^$ -bench=^BenchmarkFoo$ -cpuprofile=/tmp/cpuprofile.out .
$ go test -run=^$ -bench=^BenchmarkFoo$ -memprofile=/tmp/memprofile.out .
$ go test -run=^$ -bench=^BenchmarkFoo$ -blockprofile=/tmp/blockprofile.out .
$ go test -run=^$ -bench=^BenchmarkFoo$ -mutexprofile=/tmp/mutexprofile.out .
$ go test -run=^$ -bench=^BenchmarkFoo$ -o=/st -cpuprofile=/tmp/cpuprofile.out .六级作文常用句型
$ go tool pprof -http=:5000 /tmp/cpuprofile.out                    # 在浏览器中审查
$ go tool pprof --nodefraction=0.1 -http=:5000 /tmp/cpuprofile.out # 忽略⼩于 10% 的节点Tracing ⽣成lowbattery
$ go test -run=^$ -bench=^BenchmarkFoo$ -trace=/tmp/trace.out .
英语句子在线翻译
$ go tool trace /tmp/trace.out # ⽬前只在 Chrome/Chromium 可⽤
竞态条件检查
$ go build -race -o=/tmp/foo .        # 别⽤于⽣产环境
$ GORACE="log_path=/tmp/race" /tmp/foo # 输出到⽂件⽽不是标准错误
依赖管理(Module)
项⽬依赖更新
$ go list -m -/alecthomas/chroma  # 检查该库是否有新版本
$ go list -m -u all                          # 更新项⽬所有依赖
依赖升级或降级
$ go /foo/bar@latest            # 最新版本
$ go /foo/bar@v1.2.3            # 特定版本 v1.2.3
$ go /foo/bar@7e0369f          # 到特定提交
运⾏所有包的全部测试检验不兼容性
$ go mod tidy $ go test all
使⽤依赖的本地版本
$ go mod edit -/alexedwards/argon2id=/home/alex/code/argon2id # 创建 replace 规则$ go mod edit -/alexedwards/argon2id                      # 删除 replace 规则
其他⼯具
升级代码到 Go 新版本
$ go fix ./...回报英文
报告 Bug
$ go bug # 会打开浏览器,定位 Go 代码仓库的 issue 页⾯

本文发布于:2023-07-04 10:17:33,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/166676.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:测试   依赖   缓存   优化   基准   检查
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图