Skip to content

go-event 是一个 go 实现的事件及事件订阅库 / go-event is a go event pkg

License

Notifications You must be signed in to change notification settings

deatil/go-event

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

go-event

Go Reference

Desc

  • go-event is a go event or event'subscribe pkg

中文 | English

Download

go get -u github.com/deatil/go-event

Get Starting

package main

import (
    "fmt"
    "github.com/deatil/go-event/event"
)

type TestEvent struct {}

func (this *TestEvent) OnTestEvent(data any) {
    fmt.Println("TestEvent: ")
    fmt.Println(data)
}

func (this *TestEvent) OnTestEventName(data any, name string) {
    fmt.Println("TestEventName: ")
    fmt.Println(data)
    fmt.Println(name)
}

type TestEventPrefix struct {}

func (this TestEventPrefix) EventPrefix() string {
    return "ABC"
}

func (this TestEventPrefix) OnTestEvent(data any) {
    fmt.Println("TestEventPrefix: ")
    fmt.Println(data)
}

type TestEventSubscribe struct {}

func (this *TestEventSubscribe) Subscribe(e *event.Events) {
    e.Listen("TestEventSubscribe", this.OnTestEvent)
}

func (this *TestEventSubscribe) OnTestEvent(data any) {
    fmt.Println("TestEventSubscribe: ")
    fmt.Println(data)
}

type TestEventStructData struct {
    Data string
}

func TestEventStruct(data TestEventStructData, name any) {
    fmt.Println("TestEventStruct: ")
    fmt.Println(data.Data)
    fmt.Println(name)
}

type TestEventStructHandle struct {}

func (this *TestEventStructHandle) Handle(data any) {
    fmt.Println("TestEventStructHandle: ")
    fmt.Println(data)
}

func main() {
    // Listen
    event.Listen("data.error", func(data any) {
        fmt.Println(data)
    })

    // Dispatch
    eventData := "index data"
    event.Dispatch("data.error", eventData)

    // call prefix `data.` all listener
    event.Dispatch("data.*", eventData)

    // ==================

    // Subscribe struct
    event.Subscribe(&TestEvent{})
    event.Subscribe(TestEventPrefix{})
    event.Subscribe(&TestEventSubscribe{})

    // call listens
    event.Dispatch("TestEvent", eventData)
    event.Dispatch("TestEventName", eventData)
    event.Dispatch("ABCTestEvent", eventData)
    event.Dispatch("TestEventSubscribe", eventData)

    // ==================

    // listen struct data
    event.Listen(TestEventStructData{}, TestEventStruct)

    // call
    eventData2 := "index data"
    event.Dispatch(TestEventStructData{
        Data: eventData2,
    })

    // ==================

    // listen struct and use struct Handle func to call
    event.Listen("TestEventStructHandle", &TestEventStructHandle{})

    // call
    event.Dispatch("TestEventStructHandle", eventData)
}

LICENSE

  • The library LICENSE is Apache2, using the library need keep the LICENSE.

Copyright