Skip to content


Folders and files

Last commit message
Last commit date

Latest commit



71 Commits

Repository files navigation


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("", func(text string){
    	// some logic 
    }, "text")
    // init event
    e.Fire("") // or e.Go("")

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 👍