环境变量

七牛云 https://goproxy.cn

阿里云 https://mirrors.aliyun.com/goproxy/

$ go env $ go env GOPATH GOO GOARCH $ go env -w GOPROXY=https://goproxy.cn,direct $ go help environment

配置代理(Go 1.13 及以上推荐)

$ go env -w GO111MODULE=on $ go env -w GOPROXY=https://goproxy.cn,direct $ go env -u GOPROXY

其他版本

$ export GO111MODULE=on $ export GOPROXY=https://goproxy.cn $ echo "export GO111MODULE=on" >> ~/.profile $ echo "export GOPROXY=https://goproxy.cn" >> ~/.profile $ source ~/.profile

编译

$ go build -v 编译时显示包名 -p n 开启并发编译,默认情况下该值为 CPU 逻辑核数 -a 强制重新构建 -n 打印编译时会用到的所有命令,但不真正执行 -x 打印编译时会用到的所有命令 -race 开启竞态检测

运行代码

$ go run . # 运行当前目录的包 $ go run ./cmd/foo # 运行 ./cmd/foo 目录下的包 获取依赖 $ go get github.com/foo/bar@v1.2.3 $ go get github.com/foo/bar@8e1b8d3 $ go list -m all # 显示所有依赖 $ go mod why -m golang.org/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语言编写的程序进行测试,这种测试是以代码包为单位的,命令会自动测试每一个指定的代码包。当然,前提是指定的代码包中存在测试源码文件。 测试用例有四种形式: TestXxxx(t *testing.T) // 基本测试用例 BenchmarkXxxx(b *testing.B) // 压力测试的测试用例 Example_Xxx() // 测试控制台输出的例子 TestMain(m *testing.M) // 测试Main函数

$ go test -run 主要是Test开头的函数使用,运行满足表达式的所有测试用例

-bench 与run行为类似,但是跑的是Benchmark开头的测试用例

-benchtime 默认为1s,表示benchmark测试的持续时间,注意要带单位,h为小时,m为分钟,s为秒,当然也可以指定运行多少次,单位为x时代表运行多少次

-count 代表运行多少次示例,注意,这里跟benchtime的有差别,count代表运行每个测试用例多少次,控制台会有多个用例运行的展示,假设-benchtime设置的是100x,-count设置的为3,即代表该基准测试跑100次迭代,运行3次产生3个结果

-cpu 运行的cpu数量,其实也就是GOMAXPROCS

-failfast 前一个用例运行失败,下一个不继续运行

-list 列出符合条件的测试用例列表,写匹配表达式,带了这个参数就不会运行测试用例

-v 显示log打印的内容

-timeout 超时时间,默认为10m,也就是十分钟。

-benchmem 打印内存alloc统计信息

-blockprofile 将用例goroutine的阻塞情况写入文件,需要使用go tool pprof查看

-cpuprofile 将cpu信息写入指定文件

-memprofile 将内存信息写入指定文件

-mutexprofile 将锁信息写入指定文件

-outputdir 设置上述输出文件的目录

-trace 将执行链路输出到指定文件,需要使用go tool trace查看

test.short : 一个快速测试的标记,在测试用例中可以使用 testing.Short() 来绕开一些测试 test.outputdir : 输出目录 test.coverprofile : 测试覆盖率参数,指定输出文件 test.run : 指定正则来运行某个/某些测试用例 test.memprofile : 内存分析参数,指定输出文件 test.memprofilerate : 内存分析参数,内存分析的抽样率 test.cpuprofile : cpu分析输出参数,为空则不做cpu分析 test.blockprofile : 阻塞事件的分析参数,指定输出文件 test.blockprofilerate : 阻塞事件的分析参数,指定抽样频率 test.timeout : 超时时间 test.cpu : 指定cpu数量 test.parallel : 指定运行测试用例的并行数

go clean

该命令会删除掉执行其它命令时产生的一些文件和目录。

go list

go list命令的作用是列出指定的代码包的信息。