Любой разработчик, работавший с высоконагруженными приложениями на Go, сталкивался с дилеммой: хочется простоты, как у стандартных каналов (chan), но нужно больше скорости и масштабируемости. Новая библиотека event от разработчика Романа Атачиантса решает эту проблему, обещая ускорить обработку событий внутри одного процесса в 4–10 раз по сравнению с каналами. Одна из причин, почему Go стал так популярен — это его удобство и производительность в реализации конкурентного кода через горутины и каналы. Однако в реальном мире, где необходимо обрабатывать десятки миллионов событий в секунду, встроенные механизмы языка могут не справляться или становиться узким местом. Библиотека event отличается от стандартного подхода несколькими ключевыми моментами: Ключевые особенности реализации включают: Вот типичный пример кода с использованием библиотеки: type myEvent struct {
Data string
}
func (ev myEvent) Type() uint32 { return 0x01 }
// Подписка на события
defer event.On(func(e event.Event) {