title: "Go Tricks 1" date: 2022-03-23T16:23:05+07:00
interface and its function wrapper defination
// 事件接口
interface IEventHandler {
DoSomething() int
}
// 單接口的函數 Wrapper
type IEventHandlerWrapper func() int
// 實現事件接口
func (ehw IEventHandlerWrapper)DoSomething() int {
return ehw()
}
注冊中心
// 注冊事件處理函數
var registered map[string]IEventHandler
func RegisterEvent(ev string, handler IEventHandler) {
registered[ev] = handler
}
注冊事件處理函數
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
}))
使事件處理函數及其類似的應用場景同時支持 interface implementation 和 lambda