一般格式:go command [arguments]
build
-
build
最常用的命令,用来编译go文件
跨平台编译,如
env GOOS=linux GOARCH=amd64 go build
在Linux系统、amd64架构编译
install
-
install
同为编译,和
build
的不同在于编译后会将输出文件打包成库放在pkg下面
get
-
get
用于获取go第三方包,默认从git repo获取最新版本,如
go get -u github.com/go-sql-driver/mysql
fmt
-
fmt
统一代码风格,
go fmt
test
-
test
运行当前包目录下的test,如
go test
或go test -v
,test文件命名是xxx_test.go
关于写test case:
-
test命名为
TestXxxx
-
test case 的参数为:
t *testing.T
或者b *testing.B
(用于测试性能) -
t.Errorf()
用于打印错误信息,同时跳过整个test case -
t.SkipNow()
为跳过当前test,并且直接处理下一个test case,要写在test case的第一行 -
t.Run()
来执行subtests,可以做到控制test输出以及test的顺序 -
TestMain(m *testing.M)
初始化test,使用m.Run()
来调用其他tests,可以用来完成一些初始化;如果没有调用m.Run()
,那么处了TestMain以外其他的tests就不会被执行
关于benchmark:
- benchmark函数一般以Benchmark开头,如
BenchmarkXxx
- 参数为:
b *testing.B
- 每次执行一般会跑
b.N
次 - 在执行过程中根据实际case的执行时间是否稳定来调整
b.N
的次数直至稳定 - 命令行中,命令为:
go test -bench=.