में त्रुटि से बाहर निकलें स्थिति 2" त्रुटि मैं चैनल में चैनल सीखने के लिए एक सरल प्रोग्राम बनाने की कोशिश कर रहा हूं। लेकिन मैं एक गतिरोध त्रुटि है, जो मैं"सभी goroutines सो रहे हैं - डेडलॉक! प्रिंटर-रिसीवर प्रोग्राम
package main
import (
"fmt"
"time"
)
func printer(c chan int) {
for i := 0; i < 10; i++ {
c <- i
time.Sleep(time.Second)
}
}
func reciever(c chan int) {
for {
recievedMsg := <-c
fmt.Println(recievedMsg)
}
}
func main() {
newChanel := make(chan int)
printer(newChanel)
reciever(newChanel)
}
मेरे प्रारंभिक विचार यह पता लगाने नहीं कर सकते करने के लिए चल रहा है सो समारोह के बारे में कुछ था, लेकिन यहां तक कि अगर मैं इस में शामिल नहींं मैं अभी भी इस में चलाने त्रुटि और निकास संदेश। क्या कोई इसे हल करने के बारे में कुछ संकेत दे सकता है?
अग्रिम
धन्यवाद:
तो मैं आप इस कोड का प्रस्ताव। मैंने इसे आपकी युक्तियों के अनुसार संशोधित किया, और 0 - 9 प्रिंटों से सभी संख्याएं लेकिन फिर मुझे इसके बाद एक ही त्रुटि मिल गई। मैंने यह भी जोड़ा: \t var इनपुट स्ट्रिंग fmt.Scanln (और इनपुट) लेकिन संख्याओं को मुद्रित करने के बाद मुझे एक ही त्रुटि मिलती है। कोई आइडिया है कि मैं क्या गलत कर रहा हूँ? – miner
मैंने प्रिंटर को एक नियमित दिनचर्या बनाने के अलावा'go reciever 'जोड़ा, और फिर यह त्रुटियों के बिना 0 - 9 प्रिंट करता है। – miner
मैंने सटीक रूप से संपादित किया कि चैनल बंद होने पर आपको चैनल को बंद करना और अंत रिसेप्शन कैसे करना चाहिए। यह क्लीनर (और अधिक पुन: प्रयोज्य) लगता है। –