go test & bench
go test 默认执行当前目录下以xxx_test.go的测试文件。 go test -v 可以看到详细的输出信息。 go test -v xxx_test.go 指定测试单个文件,但是该文件中如果调用了其它文件中的模块会报错。 指定某个测试函数运行: go test -v -test.run Testxxx 注意: 该测试会测试包含该函数名的所有函数,即如果待测试的函数名是TestSyncResourceQuota,那么指令go test -v -test.run TestSyncResourceQuota会测试包含该函数名的所有函数(比如下面的TestSyncResourceQuotaSpecChange、TestSyncResourceQuotaSpecHardChange等函数),详细如下: go test -bench='Fib$' -bench 参数支持传入一个正则表达式,匹配到的用例才会得到执行,例如,只运行以 Fib 结尾的 benchmark 用例 go test -bench='Fib$' -benchtime=5s . 那么我们可以使用 -benchtime 指定为 5s。例如:
代码demo
func TestIsNum(t *testing.T) { var apiRuleTests = []struct { in string // input expected bool // expected result }{ {"123", true}, {"key", false}, } for _, tt := range apiRuleTests { actual := IsNum(tt.in) if actual != tt.expected { t.Errorf("IsNum(%s) = %t; expected %t", tt.in, actual, tt.expected) } } } func BenchmarkIsNum(b *testing.B) { for i := 0; i < b.N; i++ { IsNum("[0]") IsNum("key") } }
go清空slice
a := []int{1,2,3} a = nil // json 会编码 nil a = a[:0] // json 会编码 [] 如果复用 用这种 fmt.Println(a, len(a), cap(a)) // [] 0 0
动态创建二位数组
dp := make([][]int,10) for i:=0;i<10;i++{ dp[i] = make([]int,10) }