在go中 我们可以通过fp来复用计时器函数
eg.
func Test01(t *testing.T) {
m := timeSpend(targetMethod)(2)
t.Log(m)
}
func targetMethod(a int) int {
time.Sleep(time.Second * 3)
return a
}
func timeSpend(inner func(i int) int) func(i int) int {
return func(i int) int {
start := time.Now()
res := inner(i)
duration := time.Since(start).Seconds()
fmt.Print("duration: ", duration)
return res
}
}
这里也可以使用类型别名 这样看着舒服些
type intConv func(i int) int
func timeSpend(inner intConv) intConv {
return func(i int) int {
start := time.Now()
res := inner(i)
duration := time.Since(start).Seconds()
fmt.Print("duration: ", duration)
return res
}
}