Avatar ·

Go में N चैनलों को कैसे सुनें: मनमानी संख्या में चैनलों के लिए डायनेमिक select?

सभी को नमस्ते! मैं Go सीख रहा हूँ और एक समस्या का सामना किया है। मैं एक उपयोगिता लिख रहा हूँ जो कई डेटा स्रोतों से इवेंट प्रोसेस करती है। प्रत्येक स्रोत अपनी गोरूटीन में काम करता है और अपने चैनल में डेटा भेजता है। स्रोतों की संख्या पहले से ज्ञात नहीं है और प्रोग्राम के चलने के दौरान बदल सकती है (उपयोगकर्ता स्रोत जोड़/हटा सकता है)।\n\nGo में `select` कंस्ट्रक्शन है जो एक साथ कई चैनलों को सुनने की अनुमति देता है। लेकिन यह स्टैटिक है — सभी `case` पहले से बताने होते हैं:\n\n```go\nselect {\ncase msg1 := <-ch1:\n // प्रोसेसिंग\ncase msg2 := <-ch2:\n // प्रोसेसिंग\ncase msg3 := <-ch3:\n // प्रोसेसिंग\n}\n```\n\nलेकिन अगर मेरे पास चैनलों का एक स्लाइस `[]chan int` है और उनकी संख्या 5, 10 या 100 हो सकती है तो क्या करें? डायनेमिक `select` कैसे लिखें जो मनमानी संख्या में चैनलों के साथ काम करे?