title: "Go Tricks 1" date: 2022-03-23T16:23:05+07:00
interface and its function wrapper defination
interface IEventHandler {
DoSomething() int
}
type IEventHandlerWrapper func() int
func (ehw IEventHandlerWrapper)DoSomething() int {
return ehw()
}
在某处定义
func RegisterEvent(ev string, handler IEventHandler);
可以更灵活处理
type SomeLogic struct {}
// implements check
var _ IEventHandler = (SomeLogic*)(nil)
func (sl *SomeLogic) DoSomething() int {
return 0
}
// register
// 1.
RegisterEvent("something", &SomeLogic{})
// 2. write inplace.
RegisterEvent("others", IEventHandlerWrapper(func()int{
return 0
}))