Live2D

对回调函数的理解和使用

当程序跑起来时,一般情况下,应用程序(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)
}
posted @ 2021-05-21 11:21  NyerROii  阅读(82)  评论(0)    收藏  举报