装饰器本质上允许您包装现有功能并在【开始】或【结尾】处添加您自己的自定义功能。
这在很多可以重复的代码有很大的用处,比如,你有很多个函数,但是,你想要在调用这些函数之前或者之后输出一条调用成功的语句,就可以用装饰器来完成这个功能。
原理很简单,就是在被修饰的函数开始之前或者运行结束之后插入一些代码。
go语言实现
package main
import "fmt"
func declaration (targetFunc func()) {
fmt.Println("调用了函数")
targetFunc()
fmt.Println("调用了函数之后")
}
func sayHello() {
fmt.Println("Hello world")
}
func main() {
declaration(sayHello)
}
在这串代码中,函数declaration 起到了装饰器的作用,该函数接收一个函数作为参数,在这个函数开始之前执行了一些语句,在函数开始之后也执行了一些语句。这就是装饰器的作用了。