go语言没有类似语法糖的方法来调用装饰器,但是其本质原理都是相同的,其他功能都可以在基础上扩展
package main
import (
"fmt"
"time"
)
func T_Format(t time.Time) string {
b := t.Format("2006-01-02 15:04:05")
return b
}
//运行时间装饰器
func calTime(f func()) func() {
inner := func() {
start := time.Now().UnixNano() / 1000
f()
end := time.Now().UnixNano() / 1000
fmt.Println(end - start)
}
return inner
}
func testtime() {
now := time.Now()
t := T_Format(now)
fmt.Println(t)
}
//主函数
func main() {
a := calTime(testtime)
a()
}