裝飾器本質上允許您包裝現有功能並在【開始】或【結尾】處添加您自己的自定義功能。
這在很多可以重複的代碼有很大的用處,比如,你有很多個函數,但是,你想要在調用這些函數之前或者之後輸出一條調用成功的語句,就可以用裝飾器來完成這個功能。
原理很簡單,就是在被修飾的函數開始之前或者運行結束之後插入一些代碼。
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 起到了裝飾器的作用,該函數接收一個函數作爲參數,在這個函數開始之前執行了一些語句,在函數開始之後也執行了一些語句。這就是裝飾器的作用了。