1.用来封装一些功能
执行函数之前先进行日志打印,和监控打点,不必每个函数都再添加
func getFunc(fn func,...)func(){
return func(){
log.Println(...)
mertric(...)
fn()
}
}
2.使用闭包代替全局变量
不用每次修改全局变量,避免全局变量污染和安全问题
var flag = true
func f(){
if flag {
fmt.Println("允许执行")
}
}
func f() func() {
var x = 0
return func(){
x++
fmt.Println(x)
}
}
3.函数以外,在其他函数中访问该函数参数
var f func()bool
func f1(){
var flag = true
f = func() bool {
return flag
}
}
func main() {
f1()
fmt.Println(f())
}