Build Status codecov Go Report Card GoDoc

This is package implements pattern-observer

Fast example

import (

func main() {
	// create struct
	e := event.New()

	// subscriber 
	e.Add("push.email", func(text string){
    	// some logic 
    }, "text")
    // init event
    e.Fire("push.email") // or e.Go("push.email")

let us consider an example:

  • You must first create the structure
  • Next, the first argument declares the name of the event (string type), second argument executes when the event occurs, the third argument is passed a list of arguments, which are substituted in the parameters of the second argument.
  • In the end you need to run the event. There are two methods available “Go” and his alias “Fire”

The subscriber function method

type Email struct {
	count int
func (e *Email) Push() {
	e.count += 1
	fmt.Printf("Push email again, count %d \n", e.count)
func main() {
	e := event.New()
	email := new(Email)
	e.Add(email, email.Push)
// output 
// Push email again, count 1 
// Push email again, count 2 


// create struct and add new event handler
BenchmarkAdd-8           1000000              1482 ns/op

// create struct and add new event handler and N run this handler
BenchmarkGo-8            5000000               339 ns/op

  • In this example we sign the event method structure

Read more information in examples