funcwrapping(ffunc()string){fmt.Println("do my work...")fmt.Println("wrapping function: ",f())fmt.Println("my work finished !")}funcsayHello()string{return"Hello !"}funcsayByeBye()string{return"Bye Bye !"}funcmain(){wrapping(sayHello)wrapping(sayByeBye)}/*
输出:
do my work...
wrapping function: Hello !
my work finished !
do my work...
wrapping function: Bye Bye !
my work finished !
*/
一个函数可以根据传递进来的不同的函数产生不同的反应,传递进来的函数本质上是一个闭包。
3. Defer Work
这一个过程主要是与Javascript的回调函数进行对比,比如在JS中:
1
2
3
4
5
6
7
8
doWork1(a,b,function(result){doWork2(result,function(result){doWork3(result,function(result){// use the final result here
});});});console.log("hi!");