package event_v2 // 事件接口 type IEvent interface { Attach(listeners ...Listener) // 事件添加观察者 Observers() []Listener // 获取所有的观察者 //Detach(listener Listener) DetachIndexOf(index int) } type Event struct { listeners []Listener } func (e *Event) Attach(listeners ...Listener) { e.listeners = append(e.listeners, listeners...) } //func (e *Event) Detach(listener Listener) { // for k := range e.listeners { // if listener == e.listeners[k] { // // } // } //} // 移除某个监听器 func (e *Event) DetachIndexOf(index int) { if len(e.listeners) > index && index > 0 { e.listeners = append(e.listeners[:index], e.listeners[index+1:]...) } } func (e *Event) Observers() []Listener { return e.listeners }