Mode:
Duration:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package main
import "fmt"
type Event struct {
Name string
Data string
}
type EventBus struct {
subscribers []func(Event)
}
func (b *EventBus) Subscribe(handler func(Event)) {
b.subscribers = append(b.subscribers, handler)
}
func (b *EventBus) Publish(event Event) {
for _, subscriber := range b.subscribers {
subscriber(event)
}
}
func main() {
bus := EventBus{}
bus.Subscribe(func(e Event) {
fmt.Println("Consumer received:", e.Name)
})
event := Event{
Name: "UserCreated",
Data: "user_id=123",
}
fmt.Println("Producer published:", event.Name)
bus.Publish(event)
}Coding works best on desktop or with an external keyboard.