@@ -97,24 +97,105 @@ package main
97
97
98
98
import (
99
99
" fmt"
100
+ " time"
101
+
102
+ " atomicgo.dev/event"
100
103
)
101
104
105
+ type Player struct {
106
+ Name string
107
+ }
108
+
109
+ var PlayerJoinEvent = event.New [Player]()
110
+
102
111
func main () {
103
- fmt.Println (" Hello, World!" )
112
+ // Listen to the event as many times as you want
113
+ PlayerJoinEvent.Listen (func (p Player) {
114
+ fmt.Printf (" Player %q joined the game\n " , p.Name )
115
+ })
116
+
117
+ PlayerJoinEvent.Listen (func (p Player) {
118
+ // Do something else
119
+ })
120
+
121
+ // ...
122
+
123
+ // Trigger the event somewhere - can be in a different function or package
124
+ PlayerJoinEvent.Trigger (Player{Name: " Marvin" })
125
+ PlayerJoinEvent.Trigger (Player{Name: " Bob" })
126
+ PlayerJoinEvent.Trigger (Player{Name: " Alice" })
127
+
128
+ // Keep the program alive
129
+ time.Sleep (time.Second )
130
+
104
131
}
105
132
```
106
133
107
134
#### Output
108
135
109
136
```
110
- Hello, World!
137
+ Player "Marvin" joined the game
138
+ Player "Bob" joined the game
139
+ Player "Alice" joined the game
111
140
```
112
141
113
142
114
143
115
144
## Index
116
145
146
+ - [ type Event] ( < #Event > )
147
+ - [ func New\[ T any\]\(\) \* Event\[ T\] ] ( < #New > )
148
+ - [ func \( e \* Event\[ T\]\) Close\(\) ] ( < #Event[T].Close > )
149
+ - [ func \( e \* Event\[ T\]\) Listen\( f func\( T\)\) ] ( < #Event[T].Listen > )
150
+ - [ func \( e \* Event\[ T\]\) Trigger\( value T\) ] ( < #Event[T].Trigger > )
151
+
152
+
153
+ <a name =" Event " ></a >
154
+ ## type [ Event] ( < https://github.com/atomicgo/event/blob/main/event.go#L6-L9 > )
155
+
156
+ Event represents an event system that can handle multiple listeners.
157
+
158
+ ``` go
159
+ type Event [T any] struct {
160
+ // contains filtered or unexported fields
161
+ }
162
+ ```
163
+
164
+ <a name =" New " ></a >
165
+ ### func [ New] ( < https://github.com/atomicgo/event/blob/main/event.go#L11 > )
166
+
167
+ ``` go
168
+ func New [T any]() *Event[T]
169
+ ```
170
+
171
+
172
+
173
+ <a name =" Event[T].Close " ></a >
174
+ ### func \(\* Event\[ T\]\) [ Close] ( < https://github.com/atomicgo/event/blob/main/event.go#L44 > )
175
+
176
+ ``` go
177
+ func (e *Event [T ]) Close ()
178
+ ```
179
+
180
+
181
+
182
+ <a name="Event[T].Listen"></a>
183
+ ### func \(\*Event\[T\]\) [Listen](<https:// github.com/atomicgo/event/blob/main/event.go#L30>)
184
+
185
+ ```go
186
+ func (e *Event[T]) Listen(f func(T))
187
+ ```
188
+
189
+ Listen gets called when the event is triggered.
190
+
191
+ <a name="Event[T].Trigger"></a>
192
+ ### func \(\*Event\[T\]\) [Trigger](<https:// github.com/atomicgo/event/blob/main/event.go#L18>)
193
+
194
+ ```go
195
+ func (e *Event[T]) Trigger(value T)
196
+ ```
117
197
198
+ Trigger triggers the event and notifies all listeners.
118
199
119
200
Generated by [gomarkdoc](<https:// github.com/princjef/gomarkdoc>)
120
201
0 commit comments