go-tricks-1.md 782 B


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

interface IEventHandler {
    DoSomething() int
}

type IEventHandlerWrapper func() int

func (ehw IEventHandlerWrapper)DoSomething() int {
    return ehw()
}

Example

在某处定义

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
}))