How does Go handle event-driven programming and real-time data processing, and what are the best practices for event-driven programming in Go programs?