对回调函数的理解和使用
当程序跑起来时,一般情况下,应用程序(application program)会时常通过API调用库里所预先备好的函数。但是有些库函数(library function)却要求应用先传给它一个函数,好在合适的时候调用,以完成目标任务。这个被传入的、后又被调用的函数就称为回调函数(callback function)。
举个简单的例子
package main
import "fmt"
var eventByName =make(map[string][]func(interface{}))
func RegistEvent(name string,callback func(interface{})) {
list:=eventByName[name]
list=append(list,callback)
eventByName[name]=list
}
func CallEvent(name string,param interface{}) {
list:=eventByName[name]
for _,callbacks:=range list{
callbacks(param)
}
}
type Actor struct {
}
func (a *Actor) OnEvent(param interface{}) {
fmt.Println("actor event",param)
}
func GrobalEvent(param interface{}) {
fmt.Println("grobal event",param)
}
func main() {
a:=new(Actor)
RegistEvent("one",a.OnEvent)
RegistEvent("two",GrobalEvent)
CallEvent("two",100)
}