मैं इस तरह समारोह लिखने के लिए कोशिश कर रहा हूँ में चान (चैनल) का एक टुकड़ा घोषणा कर सकते हैं, लेकिन मैं चैनलों की टुकड़ा की घोषणा नहीं कर सकते हैं एक है करने के लिए जाओ मेंकैसे मैं समारोह
func fanIn(set <-[]chan string) <-chan string {
c := make(chan string)
for i := range set {
go func() { for {c <-set[i]} }()
}
return c
}
यह संभव है चैनल के टुकड़े तर्क के रूप में?
कॉल
set := [2]chan string{mylib.Boring("Joe"), mylib.Boring("Ann")}
c := fanIn(set)
का उदाहरण अगर मैं इस
func fanIn(input1, input2 <-chan string) <-chan string {
मुझे लगता है कि यह टुकड़ा या "< चान स्ट्रिंग"
की सारणी रखने के लिए संभव हो जाना चाहिए क्या कर सकते हैं अपडेट किया गया:
func fanIn(set []<-chan string) <-chan string {
c := make(chan string)
for i := range set {
go func() {
for {
x := <-set[i]
c <- x
}
}()
}
return c
}
func main() {
set := []<-chan string{mylib.Boring("Joe"), mylib.Boring("Ann"), mylib.Boring("Max")}
c := fanIn(set)
for i := 0; i < 10; i++ {
fmt.Println(<-c)
}
fmt.Println("You're boring: I'm leaving.")
}
आपको शायद ही कभी अपने सार्वजनिक एपीआई से चैनल लौटाना चाहिए, इसके बजाए एक चैनल को उस तर्क के रूप में ले जाएं जिसे आप भेजते हैं। आप अपने एकल बोरिंग कॉल में इस एकल चैनल का उपयोग कर सकते हैं और प्रशंसक की भी आवश्यकता नहीं होगी। – Wessie
आप https://godoc.org/github.com/eapache/channels#Multiplex का भी उपयोग कर सकते हैं जो प्रत्येक इनपुट चैनल के लिए एक संपूर्ण goroutine spawning से बचने के लिए 'चयन' का उपयोग करता है। – Evan