--- title: "Go Tricks 1" date: 2022-03-23T16:23:05+07:00 draft: true --- ## Single Interface Function Wrapper ### Prototype interface and its function wrapper defination ```golang interface IEventHandler { DoSomething() int } type IEventHandlerWrapper func() int func (ehw IEventHandlerWrapper)DoSomething() int { return ehw() } ``` ### Example 在某处定义 ```golang func RegisterEvent(ev string, handler IEventHandler); ``` 可以更灵活处理 ```golang 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 })) ```