package main import ( "fmt" "log" "runtime/debug" "time" emitter "git.pyer.club/kingecg/goemitter" ) type St struct { Name string } func (s *St) Print(data ...interface{}) { fmt.Println(s.Name) fmt.Println(data...) } func main() { s := &St{Name: "testeer"} em := emitter.NewEmitter() em.On("test", func(data ...interface{}) { fmt.Println(data...) }) em.On("test", s.Print) em.Once("test", func(data ...interface{}) { s := fmt.Sprint(data...) fmt.Println(interface{}("Once"), s) }) em.EmitSync("test", "hello", "world") em.Emit("test", "hello", "world2") defer func() { if r := recover(); r != nil { log.Println("Recovered in main:", r) // 打印当前所有 goroutine 的堆栈信息 log.Println(string(debug.Stack())) } }() time.Sleep(1 * time.Second) }